├── .gitignore ├── CONTRIBUTORS ├── LICENSE ├── README.md ├── dist ├── compare.html ├── css │ ├── style.1.0.1.css │ └── vendor.min.1.0.1.css ├── favicon.png ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 ├── images │ ├── Sorting icons.psd │ ├── age-of-logo.png │ ├── aocversion │ │ ├── aoa_16.png │ │ ├── aoc.png │ │ ├── aoc_16.png │ │ ├── aof_16.png │ │ ├── aofe.jpg │ │ ├── aofe.png │ │ ├── aok_16.png │ │ ├── aor_16.png │ │ ├── balance.jpg │ │ ├── balance.png │ │ ├── de.png │ │ ├── de_16.png │ │ └── dlc_16.png │ ├── aoczone-logo.png │ ├── palette.png │ ├── palette_warm.png │ ├── sort_asc.png │ ├── sort_asc_disabled.png │ ├── sort_both.png │ ├── sort_desc.png │ ├── sort_desc_disabled.png │ ├── techtrees │ │ ├── aoc │ │ │ ├── aztecs.png │ │ │ ├── britons.png │ │ │ ├── byzantines.png │ │ │ ├── celts.png │ │ │ ├── chinese.png │ │ │ ├── franks.png │ │ │ └── goths.png │ │ └── dlc │ │ │ ├── aztecs.png │ │ │ ├── berbers.png │ │ │ ├── britons.png │ │ │ ├── burmese.png │ │ │ ├── byzantines.png │ │ │ ├── celts.png │ │ │ ├── chinese.png │ │ │ ├── ethiopians.png │ │ │ ├── franks.png │ │ │ ├── goths.png │ │ │ ├── huns.png │ │ │ ├── incas.png │ │ │ ├── indians.png │ │ │ ├── italians.png │ │ │ ├── japanese.png │ │ │ ├── khmer.png │ │ │ ├── koreans.png │ │ │ ├── magyars.png │ │ │ ├── malay.png │ │ │ ├── malians.png │ │ │ ├── mayans.png │ │ │ ├── mongols.png │ │ │ ├── persians.png │ │ │ ├── portuguese.png │ │ │ ├── saracens.png │ │ │ ├── slavs.png │ │ │ ├── spanish.png │ │ │ ├── teutons.png │ │ │ ├── turks.png │ │ │ ├── vietnamese.png │ │ │ └── vikings.png │ └── voobly-logo.png ├── index.html ├── js │ ├── compare.1.0.1.js │ ├── main.1.0.1.js │ └── vendor.1.0.1.js └── stats │ ├── aoc_civilizations.json │ ├── aoc_gathering.json │ ├── aoc_structures.json │ ├── aoc_technologies.json │ ├── aoc_units.json │ ├── dlc_civilizations.json │ ├── dlc_gathering.json │ ├── dlc_structures.json │ ├── dlc_technologies.json │ └── dlc_units.json ├── gulpfile.js ├── package.json ├── src ├── compare.html ├── css │ └── style.css ├── favicon.png ├── images │ ├── Sorting icons.psd │ ├── age-of-logo.png │ ├── aocversion │ │ ├── aoa_16.png │ │ ├── aoc.png │ │ ├── aoc_16.png │ │ ├── aof_16.png │ │ ├── aofe.jpg │ │ ├── aofe.png │ │ ├── aok_16.png │ │ ├── aor_16.png │ │ ├── balance.jpg │ │ ├── balance.png │ │ ├── de.png │ │ ├── de_16.png │ │ └── dlc_16.png │ ├── aoczone-logo.png │ ├── palette.png │ ├── palette_warm.png │ ├── sort_asc.png │ ├── sort_asc_disabled.png │ ├── sort_both.png │ ├── sort_desc.png │ ├── sort_desc_disabled.png │ ├── techtrees │ │ ├── aoc │ │ │ ├── aztecs.png │ │ │ ├── britons.png │ │ │ ├── byzantines.png │ │ │ ├── celts.png │ │ │ ├── chinese.png │ │ │ ├── franks.png │ │ │ └── goths.png │ │ └── dlc │ │ │ ├── aztecs.png │ │ │ ├── berbers.png │ │ │ ├── britons.png │ │ │ ├── burmese.png │ │ │ ├── byzantines.png │ │ │ ├── celts.png │ │ │ ├── chinese.png │ │ │ ├── ethiopians.png │ │ │ ├── franks.png │ │ │ ├── goths.png │ │ │ ├── huns.png │ │ │ ├── incas.png │ │ │ ├── indians.png │ │ │ ├── italians.png │ │ │ ├── japanese.png │ │ │ ├── khmer.png │ │ │ ├── koreans.png │ │ │ ├── magyars.png │ │ │ ├── malay.png │ │ │ ├── malians.png │ │ │ ├── mayans.png │ │ │ ├── mongols.png │ │ │ ├── persians.png │ │ │ ├── portuguese.png │ │ │ ├── saracens.png │ │ │ ├── slavs.png │ │ │ ├── spanish.png │ │ │ ├── teutons.png │ │ │ ├── turks.png │ │ │ ├── vietnamese.png │ │ │ └── vikings.png │ └── voobly-logo.png ├── index.html ├── js │ ├── compare.js │ └── main.js └── stats │ ├── aoc_civilizations.js │ ├── aoc_civilizations.json │ ├── aoc_gathering.js │ ├── aoc_gathering.json │ ├── aoc_matrix.csv │ ├── aoc_structures.js │ ├── aoc_structures.json │ ├── aoc_technologies.js │ ├── aoc_technologies.json │ ├── aoc_units.js │ ├── aoc_units.json │ ├── de_civilizations.js │ ├── de_civilizations_diff.json │ ├── de_matrix.csv │ ├── dlc_civilizations.js │ ├── dlc_civilizations_diff.json │ ├── dlc_gathering.js │ ├── dlc_gathering_diff.json │ ├── dlc_matrix.csv │ ├── dlc_structures.js │ ├── dlc_structures_diff.json │ ├── dlc_technologies.js │ ├── dlc_technologies_diff.json │ ├── dlc_units.js │ ├── dlc_units_diff.json │ └── util.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | build/ 27 | 28 | # Dependency directories 29 | node_modules 30 | jspm_packages 31 | 32 | # Optional npm cache directory 33 | .npm 34 | 35 | # Optional REPL history 36 | .node_repl_history 37 | 38 | *.dev.js 39 | *.dev.css 40 | -------------------------------------------------------------------------------- /CONTRIBUTORS: -------------------------------------------------------------------------------- 1 | pip 2 | Jineapple 3 | HSZemi 4 | Nimanoe 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # aoe2stats.net 2 | Age of Empires II statistics [website](http://aoe2stats.net). 3 | 4 | Includes unit, building, civilization and technology information and statistics. 5 | 6 | 7 | # Development 8 | 9 | ## Setup 10 | 11 | - requires node js with yarn 12 | - clone the git repository 13 | `git clone https://github.com/aocpip/aoe2stats.git` 14 | - install dependencies and run (live reloading doesn't work yet) 15 | ``` 16 | yarn 17 | yarn dev 18 | ``` 19 | - browser window should automatically open (localhost:8080) 20 | 21 | ## Release 22 | 23 | Use npm version commands. E.g. 24 | ``` 25 | npm version patch 26 | ``` -------------------------------------------------------------------------------- /dist/compare.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | AoCStats: Age of Empires 2 Statistics 11 | 12 | 13 | 22 | 23 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 45 | 53 | 54 |
55 |

Re-write work in progress. Thank you for your patience.

56 | 57 |
58 |
59 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /dist/css/style.1.0.1.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | html, body { 4 | height: 100%; 5 | margin: 0; 6 | padding: 0; 7 | } 8 | 9 | body { 10 | background-color: #e9ece5; 11 | color: #3b3a36; 12 | } 13 | 14 | .searchable{ 15 | cursor: pointer; 16 | color: #337ab7; 17 | } 18 | 19 | .searchbox { 20 | float: right; 21 | display: inline-block; 22 | 23 | margin: 2px; 24 | margin-right: 24px; 25 | 26 | font-size: 24px; 27 | } 28 | 29 | .searchbox input { 30 | color: black; 31 | } 32 | 33 | /* 34 | .anchors, .title { 35 | float: left; 36 | display: inline-block; 37 | } 38 | */ 39 | 40 | .wrapper { 41 | min-height: 100%; 42 | height: auto !important; 43 | height: 100%; 44 | margin: 0 auto -132px; /* the bottom margin is the negative value of the footer's height */ 45 | } 46 | 47 | #header { 48 | position: fixed; 49 | top: 0; 50 | z-index: 1000; 51 | right: 0; 52 | left: 0; 53 | } 54 | 55 | #header-push { 56 | float: left; 57 | } 58 | 59 | span.clear{ 60 | clear: both; 61 | display: block; 62 | } 63 | 64 | .header { 65 | display: block; 66 | padding: 8px; 67 | background-color: #1d2120; 68 | color: white; 69 | } 70 | 71 | span.title { 72 | color: white; 73 | font-size: 20px; 74 | margin: 0px 16px; 75 | padding-top: 8px; 76 | display: inline-block; 77 | } 78 | 79 | 80 | .navbar-inverse .navbar-nav>.active>a, 81 | .navbar-inverse .navbar-nav>.active>a:focus, 82 | .navbar-inverse .navbar-nav>.active>a:hover { 83 | color: #fff; 84 | background-color: #080808; 85 | font-weight: bold; 86 | } 87 | 88 | .navbar-header a, .navbar-nav a{ 89 | cursor: pointer; 90 | } 91 | 92 | .version-switcher { 93 | display: inline-block; 94 | float: left; 95 | } 96 | 97 | .anchors { 98 | margin: 8px; 99 | } 100 | 101 | .anchors a{ 102 | font-weight: bold; 103 | color: rgba(179, 194, 191, 0.5); 104 | font-size: 20px; 105 | margin: 0px 8px; 106 | display: inline-block; 107 | cursor: pointer; 108 | } 109 | 110 | .anchors .title-active{ 111 | color: white; 112 | } 113 | 114 | .header a:hover { 115 | color: #C4B5B1; 116 | } 117 | 118 | .footer a { 119 | color: #4D6762; 120 | font-weight: bold; 121 | } 122 | 123 | .footer a:hover { 124 | color: #736862; 125 | } 126 | 127 | 128 | .footer, .push { 129 | width: 100%; 130 | height: 124px; 131 | } 132 | 133 | #content { 134 | width: 100%; 135 | padding-top: 16px; 136 | } 137 | 138 | 139 | @media screen and (min-width: 1280px) { 140 | #content { 141 | width: 1280px; 142 | margin-left: auto; 143 | margin-right: auto; 144 | } 145 | } 146 | 147 | #logos { 148 | margin: 4px auto; 149 | position: relative; 150 | display: block; 151 | min-height: 72px; 152 | max-width: 800px; 153 | padding: 4px 20px; 154 | background: none; 155 | margin-top: 0px; 156 | text-align: center; 157 | } 158 | 159 | #logos div { 160 | vertical-align: middle; 161 | } 162 | 163 | #logos > div { 164 | display: block; 165 | } 166 | 167 | #logos .box-background { 168 | border-radius: 50px / 32px; 169 | } 170 | 171 | 172 | #logos img { 173 | position: relative; 174 | top: 50%; 175 | /* 176 | -webkit-transform: translateY(-50%); 177 | -ms-transform: translateY(-50%); 178 | transform: translateY(-50%);*/ 179 | } 180 | 181 | .right-aligned div{ 182 | float:right; 183 | text-align: right; 184 | } 185 | 186 | .left-aligned div{ 187 | float:left; 188 | text-align: left; 189 | } 190 | 191 | .aocversion > span{ 192 | min-width: 260px; 193 | } 194 | 195 | .select2-container .select2-selection--single { 196 | height: 32px; 197 | margin-top: 4px; 198 | } 199 | 200 | .version-item { 201 | vertical-align: middle; 202 | font-size: 16px; 203 | font-weight: bold; 204 | } 205 | 206 | .version-item img { 207 | display: inline-block; 208 | vertical-align: middle; 209 | padding: 2px 0px; 210 | } 211 | 212 | .version-item .helper { 213 | display: inline-block; 214 | height: 100%; 215 | vertical-align: middle; 216 | } 217 | .select2-container--default .select2-selection--single .select2-selection__arrow { 218 | top: 4px; 219 | } 220 | 221 | .section { 222 | margin: 8px; 223 | margin-left: 16px; 224 | font-size: 36px; 225 | font-weight: bold; 226 | } 227 | 228 | #voobly-logo img { 229 | background-color: rgba(0,0,0,0.54); 230 | border-radius: 20px; 231 | -webkit-box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.54); 232 | box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.54); 233 | } 234 | 235 | a { 236 | text-decoration: none; 237 | } 238 | 239 | .bold-cell { 240 | font-weight: bold; 241 | } 242 | 243 | table.dataTable tbody tr.group { 244 | background-color: #b3c2bf; 245 | color: white; 246 | } 247 | 248 | table.dataTable tbody tr.group td.group-title { 249 | font-size: 18px; 250 | cursor: pointer; 251 | } 252 | 253 | table.dataTable tbody tr.group:hover { 254 | background-color: #C1CDCB; 255 | } 256 | 257 | table.dataTable tbody tr.group-collapsed { 258 | background-color: #7A958F; 259 | } 260 | 261 | .section { 262 | display: inline-block; 263 | margin-top: 16px; 264 | } 265 | 266 | .dataTables_filter, .dataTables_info { display: none; } 267 | 268 | #content > div { 269 | padding-top: 50px; 270 | } 271 | 272 | #legend { 273 | padding-top: 0px !important; 274 | } 275 | 276 | #legend table td { 277 | padding: 4px; 278 | } 279 | 280 | #empty { 281 | text-align: center; 282 | font-size: 24px; 283 | } 284 | 285 | table.fixedHeader-floating { 286 | 287 | background-color: #e9ece5 !important; 288 | 289 | } 290 | 291 | .detail-head { 292 | font-style: italic; 293 | font-size: 16px; 294 | } 295 | 296 | table.detail-table, table.detail-table tr, table.detail-table tbody tr{ 297 | background-color: #e9ece5; 298 | } 299 | 300 | .table td.child { 301 | padding: 0; 302 | } 303 | 304 | .table td.child div { 305 | padding: 8px; 306 | background-color: white; 307 | } 308 | 309 | td.child tr > td:first-child { 310 | font-weight: bold; 311 | } 312 | 313 | .version_icon { 314 | display: inline-block; 315 | width: 16px; 316 | height: 16px; 317 | } 318 | 319 | .version_icon span { 320 | display: none; 321 | } 322 | 323 | .icon_dlc { 324 | background-image: url('../images/aocversion/dlc_16.png'); 325 | } 326 | 327 | .icon_kings { 328 | background-image: url('../images/aocversion/aok_16.png'); 329 | } 330 | 331 | .icon_conquerors { 332 | background-image: url('../images/aocversion/aoc_16.png'); 333 | } 334 | 335 | .icon_forgotten { 336 | background-image: url('../images/aocversion/aof_16.png'); 337 | } 338 | 339 | .icon_african { 340 | background-image: url('../images/aocversion/aoa_16.png'); 341 | } 342 | 343 | .icon_rajas { 344 | background-image: url('../images/aocversion/aor_16.png'); 345 | } 346 | 347 | .icon_de { 348 | background-image: url('../images/aocversion/de_16.png'); 349 | } 350 | 351 | div.availability span { 352 | display: inline-block; 353 | margin: 2px; 354 | border-radius: 2px; 355 | padding: 4px; 356 | } 357 | 358 | div.availability span.civ-avail { 359 | background-color: #A1DBA1; 360 | font-size: 12px; 361 | } 362 | 363 | div.availability span.civ-noavail { 364 | background-color: #E4ACAC; 365 | font-size: 10px; 366 | } 367 | 368 | .group .group-title:before { 369 | 370 | font-size: 14px; 371 | height: 16px; 372 | width: 16px; 373 | margin-top: 4px; 374 | margin-left: 4px; 375 | margin-right: 8px; 376 | display: inline-block; 377 | color: #fff; 378 | border: 2px solid #fff; 379 | border-radius: 16px; 380 | -webkit-box-shadow: 0 0 3px #444; 381 | box-shadow: 0 0 3px #444; 382 | -webkit-box-sizing: content-box; 383 | box-sizing: content-box; 384 | font-family: 'Courier New',Courier,monospace; 385 | text-indent: 4px; 386 | line-height: 16px; 387 | content: '+'; 388 | background-color: #337ab7; 389 | } 390 | 391 | .parent .group-title:before { 392 | content: '-'; 393 | background-color: #d33333; 394 | } 395 | 396 | #compare-clear:hover { 397 | color: #111; 398 | } 399 | 400 | /* 401 | .navbar-fixed-top .navbar-right { 402 | margin-right: 0; 403 | } 404 | 405 | .navbar-fixed-top div.container-fluid { 406 | margin-left: 0; 407 | margin-right: 0; 408 | padding-left:; 409 | } 410 | */ 411 | 412 | table.stickyHeader thead, th.inverse{ 413 | background-color: #3b3a36; 414 | color: #e9ece5; 415 | } 416 | -------------------------------------------------------------------------------- /dist/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/favicon.png -------------------------------------------------------------------------------- /dist/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /dist/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /dist/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/Sorting icons.psd -------------------------------------------------------------------------------- /dist/images/age-of-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/age-of-logo.png -------------------------------------------------------------------------------- /dist/images/aocversion/aoa_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aoa_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/aoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aoc.png -------------------------------------------------------------------------------- /dist/images/aocversion/aoc_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aoc_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/aof_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aof_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/aofe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aofe.jpg -------------------------------------------------------------------------------- /dist/images/aocversion/aofe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aofe.png -------------------------------------------------------------------------------- /dist/images/aocversion/aok_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aok_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/aor_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/aor_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/balance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/balance.jpg -------------------------------------------------------------------------------- /dist/images/aocversion/balance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/balance.png -------------------------------------------------------------------------------- /dist/images/aocversion/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/de.png -------------------------------------------------------------------------------- /dist/images/aocversion/de_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/de_16.png -------------------------------------------------------------------------------- /dist/images/aocversion/dlc_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aocversion/dlc_16.png -------------------------------------------------------------------------------- /dist/images/aoczone-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/aoczone-logo.png -------------------------------------------------------------------------------- /dist/images/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/palette.png -------------------------------------------------------------------------------- /dist/images/palette_warm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/palette_warm.png -------------------------------------------------------------------------------- /dist/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/sort_asc.png -------------------------------------------------------------------------------- /dist/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /dist/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/sort_both.png -------------------------------------------------------------------------------- /dist/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/sort_desc.png -------------------------------------------------------------------------------- /dist/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/aztecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/aztecs.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/britons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/britons.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/byzantines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/byzantines.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/celts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/celts.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/chinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/chinese.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/franks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/franks.png -------------------------------------------------------------------------------- /dist/images/techtrees/aoc/goths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/aoc/goths.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/aztecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/aztecs.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/berbers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/berbers.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/britons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/britons.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/burmese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/burmese.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/byzantines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/byzantines.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/celts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/celts.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/chinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/chinese.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/ethiopians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/ethiopians.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/franks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/franks.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/goths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/goths.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/huns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/huns.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/incas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/incas.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/indians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/indians.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/italians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/italians.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/japanese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/japanese.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/khmer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/khmer.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/koreans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/koreans.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/magyars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/magyars.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/malay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/malay.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/malians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/malians.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/mayans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/mayans.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/mongols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/mongols.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/persians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/persians.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/portuguese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/portuguese.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/saracens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/saracens.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/slavs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/slavs.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/spanish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/spanish.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/teutons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/teutons.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/turks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/turks.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/vietnamese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/vietnamese.png -------------------------------------------------------------------------------- /dist/images/techtrees/dlc/vikings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/techtrees/dlc/vikings.png -------------------------------------------------------------------------------- /dist/images/voobly-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/dist/images/voobly-logo.png -------------------------------------------------------------------------------- /dist/js/compare.1.0.1.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('table.stickyHeader').stickyTableHeaders(); 3 | }); 4 | 5 | const ROW_TYPE = 0 6 | const ROW_NAME = 1 7 | const ROW_AGE = 2 8 | 9 | const ROW_SOURCE = 1 10 | const NOT_FOUND = { 11 | name: 'Not found' 12 | } 13 | 14 | const COLUMNS_ORDER = { 15 | 'type': "Type", 16 | 'ct': "Civilization type", 17 | 'ver': "Introduced in ", 18 | 'age': "Age", 19 | 'cost': "Cost", 20 | 'hp': "HP", 21 | 'bt': "Build time", 22 | 'time': "Research time", 23 | 'speed': "Gathering speed", 24 | 'fr': "Firing rate", 25 | 'ad': "Attack delay", 26 | 'mr': "Movement rate", 27 | 'los': "Line of sight", 28 | 'ra': "Range", 29 | 'at': "Attack", 30 | 'ar': "Armor (melee/pierce)", 31 | 'extra': "Extra", 32 | 'civb': "Civilization bonuses", 33 | 'uu': "Unique unit", 34 | 'ut': "Unique technology", 35 | 'tb': "Team bonus", 36 | 'bs': "Civilization bonuses", 37 | 'tt': "Techtree", 38 | 'note': "Note", 39 | 'for': "Technology for or Upgrades", 40 | 'GA': "Garrison or extra info", 41 | 'avail': "Available", 42 | 'noavail': "Not available" 43 | } 44 | 45 | const COLUMNS_FORMAT = { 46 | 'type': 'format_default', 47 | 'ct': 'format_default', 48 | 'ver': 'format_version', 49 | 'age': 'format_age', 50 | 'cost': 'format_default', 51 | 'hp': 'format_default', 52 | 'bt': 'format_default', 53 | 'speed': 'format_default', 54 | 'time': 'format_default', 55 | 'fr': 'format_default', 56 | 'ad': 'format_default', 57 | 'mr': 'format_default', 58 | 'los': 'format_default', 59 | 'ra': 'format_default', 60 | 'at': 'format_default', 61 | 'ar': 'format_default', 62 | 'extra': 'format_table', 63 | 'uu': 'format_default', 64 | 'ut': 'format_default', 65 | 'tb': 'format_default', 66 | 'bs': 'format_default', 67 | 'civb': 'format_table', 68 | 'note': 'format_default', 69 | 'for': 'format_default', 70 | 'GA': 'format_default', 71 | 'avail': 'format_available', 72 | 'noavail': 'format_not_available', 73 | 'tt': 'format_techtree' 74 | } 75 | 76 | Vue.component('default-item', { 77 | template: '{{value}}', 78 | props: ['value'] 79 | }) 80 | 81 | Vue.component('table-item-row', { 82 | props: ['head', 'value'], 83 | template: '{{head}}{{value}}' 84 | }) 85 | 86 | Vue.component('table-item', { 87 | props: ['data'], 88 | template: ` 89 | 90 | 96 |
97 | `, 98 | }) 99 | 100 | Vue.component('availability-item', { 101 | template: 'TBD availability' 102 | }) 103 | 104 | Vue.component('version-item', { 105 | template: 'TBD version' 106 | }) 107 | 108 | Vue.component('age-item', { 109 | template: 'TBD age' 110 | }) 111 | 112 | Vue.component('techtree-item', { 113 | template: 'TBD techtree' 114 | }) 115 | 116 | var table = new Vue({ 117 | name: "compare-table", 118 | data: function () { 119 | return { 120 | aocVersion: "aoc" 121 | }; 122 | }, 123 | created: function () { 124 | var urlParams = new URLSearchParams(window.location.search) 125 | if (urlParams.has('v')) { 126 | this.aocVersion = urlParams.get('v') 127 | } 128 | // Simple GET request using fetch 129 | fetch("/stats/aoc_units.json") 130 | .then(response => response.json()) 131 | .then(data => (this.totalVuePackages = data.total)); 132 | } 133 | }) 134 | 135 | -------------------------------------------------------------------------------- /dist/stats/aoc_civilizations.json: -------------------------------------------------------------------------------- 1 | {"data":[{"name":"Aztecs","ver":"c","ct":"Infantry and Monk","uu":"Jaguar Warrior","ut":"Garland Wars","tb":"Relics generate +33% gold","bs":"","tt":"aztecs"},{"name":"Britons","ver":"k","ct":"Foot archer","uu":"Longbowman","ut":"Yeomen","tb":"Archery Ranges work 20% faster","bs":"","tt":"britons"},{"name":"Byzantines","ver":"k","ct":"Defensive","uu":"Cataphract","ut":"Logistica","tb":"Monks +50% heal speed","bs":"","tt":"byzantines"},{"name":"Celts","ver":"k","ct":"Infantry","uu":"Woad Raider","ut":"Furor Celtica","tb":"Siege Workshops work 20% faster.","bs":"","tt":"celts"},{"name":"Chinese","ver":"k","ct":"Archer","uu":"Chu Ko Nu","ut":"Rocketry","tb":"Farms provide +45 food.","bs":"","tt":"chinese"},{"name":"Franks","ver":"k","ct":"Cavalry","uu":"Throwing Axeman","ut":"Bearded Axe","tb":"Knights have +2 line of sight","bs":"","tt":"franks"},{"name":"Goths","ver":"k","ct":"Infantry","uu":"Huskarl","ut":"Anarchy(Castle), Perfusion(Imperial)","tb":"Barracks operate 20% faster","bs":"","tt":"goths"},{"name":"Huns","ver":"c","ct":"Cavalry","uu":"Tarkan","ut":"Atheism","tb":"Stables are 20% faster.","bs":"","tt":""},{"name":"Japanese","ver":"k","ct":"Infantry","uu":"Samurai","ut":"Kataparuto","tb":"Galleys have +50% line of sight","bs":"","tt":""},{"name":"Koreans","ver":"c","ct":"Tower and naval","uu":"War Wagon, Turtle Ship","ut":"Shinkichon","tb":"Mangonel line has +1 range","bs":"","tt":""},{"name":"Mayans","ver":"c","ct":"Archer","uu":"Plumed Archer","ut":"El Dorado","tb":"Walls are 50% cheaper","bs":"","tt":""},{"name":"Mongols","ver":"k","ct":"Cavalry Archer","uu":"Mangudai","ut":"Drill","tb":"Scout line has +2 LOS","bs":"","tt":""},{"name":"Persians","ver":"k","ct":"Cavalry","uu":"War Elephant","ut":"Mahouts","tb":"Knights have +2 attack versus Archers","bs":"","tt":""},{"name":"Saracens","ver":"k","ct":"Camel and naval","uu":"Mameluke","ut":"Zealotry","tb":"Foot archers have +2 attack bonus against buildings","bs":"","tt":""},{"name":"Spanish","ver":"c","ct":"Gunpowder and Monk","uu":"Conquistador, Missionary","ut":"Supremacy","tb":"Trade units generate +33% Gold","bs":"","tt":""},{"name":"Teutons","ver":"k","ct":"Infantry","uu":"Teutonic Knight","ut":"Crenellations","tb":"Units are more resistant to conversion","bs":"","tt":""},{"name":"Turks","ver":"k","ct":"Gunpowder","uu":"Janissary","ut":"Artillery","bs":"","tb":"Gunpowder units are created 20% faster","tt":""},{"name":"Vikings","ver":"k","ct":"Infantry and naval","uu":"Berserk, Longboat","ut":"Berserkergang","tb":"Docks are 25% cheaper","bs":"","tt":""}]} 2 | -------------------------------------------------------------------------------- /dist/stats/aoc_gathering.json: -------------------------------------------------------------------------------- 1 | {"data":[{"type":"Food","source":"Foraging","speed":"0.310 F/s","note":"Forage bushes are usually used at the game as second or third food option, before farms. Very often a Mill is build close to it, fastening the gathering. However, bushes are very vulnerable to overcrowding, decreasing the productivity."},{"type":"Food","source":"Sheep/Turkey/Cow","speed":"0.330 F/s","note":"Sheeps (or turkeys if you're playing on a mesoamerican map) have a interesting attribute: they can be positioned underneath the Town Center, nullifying the walk time. Usually only two sheeps are placed in the Town Center per time (yes, this requires some micromanagement and experience). Probably, the only downside is that you have to search for them."},{"type":"Food","source":"Sheep/Turkey/Cow with Britons","speed":"0.408 F/s","note":"Sheep are specially important for Britons. Finding about 12-14 sheep on land nomad can be enough for them to very quickly reach the Castle Age."},{"type":"Food","source":"Farming","speed":"0.33 - 0.41 F/s","note":"0.33 F/s without upgrades, 0.38 F/s with Wheelbarrow+Heavy Plow, 0.41 F/s after Hand Cart (Tests). The real farming speed also depends on the walking distance and villager speed and carrying capacity (wheelbarrow and handcart). They require wood and a mill. Also, farms can be upgraded with the Horse Collar, Heavy Plow and Crop Rotation, to increase a maximum amount of food. A player needs to have caution when placing them to have the optimal results!"},{"type":"Food","source":"Farming with Mayans","speed":"0.32 - 0.39 F/s","note":"0.32 F/s without upgrades, 0.35 F/s with Wheelbarrow+Heavy Plow, 0.39 F/s after Hand Cart (Tests).
\"Mayan farmers effectively work 15% slower, however, because a lot of the farming is actually 'running around on the farm', the real effect is roughly 5% slower.\"(cysion)"},{"type":"Food","source":"Farming with Aztecs","speed":"0.38 - 0.42 F/s","note":"0.38 F/s without upgrades, 0.40 F/s with Wheelbarrow+Heavy Plow, 0.42 F/s after Hand Cart (Tests). This speed improvement is due to the +5 carrying capacity."},{"type":"Food","source":"Boars","speed":"0.41 F/s","note":"These animals fight back when attacked, althought they rush the villagers who shot at them blindly. This way they can be lured to the Town Center to nullify the walking time, pretty much like sheeps, except that you cannot actively control them. Most random maps have 2 of them close to your city, which are very useful. In some cases, it might be necessary to research Loom before luring to avoid the villager dying to the boar."},{"type":"Food","source":"Boars with Mongols","speed":"0.610 F/s","note":""},{"type":"Food","source":"Deer","speed":"0.41 F/s","note":"Deer, unlike Boars, flee when attacked, or when a unit comes near them. Because of this attribute, it's quite difficult to lure them closer to the Town Center, althought a Scout can do the trick. But, usually, players build a Mill close to the pocket. There are usually 2 pockets of Deer per player in a random game"},{"type":"Food","source":"Deer with Mongols","speed":"0.610 F/s","note":""},{"type":"Food","source":"Fishing with villagers","speed":"0.43 F/s","note":"The type of fish (deep or shore) makes no difference in speed. Fishing shore fish with villagers is faster than with Fishing Ships, but has the obvious disadvantage of only being able to fish near the shore. Also, before the researching of wheelbarrow they can't carry more than 10, whilst ships can carry 15 units. Also, they usually require a mill nearby, because the Town Center is usually far away."},{"type":"Food","source":"Fishing deep fish","speed":"0.49 F/s","note":"Ship fishing is a good alternate in maps that has lakes and seas. Sea economy expand very quickly, when compared to villager based economies. They can expand even in Dark Age, whilst villager economies show great expansion only from the Castle Age onwards."},{"type":"Food","source":"Fishing deep fish with japanese","speed":"0.511 - 0.584 F/s","note":"Japanese have a bonus to their fishing ship fishing speeds 5% in Dark, 10% in Feudal, 15% in Castle and 20% in Imperial. These correspond to 0.511 F/s in Dark age, 0.536 F/s in Feudal Age, 0.559 F/s in Castle age and 0.585 F/s in Imperial Age (Tests). Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance."},{"type":"Food","source":"Fishing shore fish","speed":"0.280 F/s","note":"Fishing shore fish with fishing ships should be avoided and only using it if deep fish is very far (Tests)."},{"type":"Food","source":"Fishing shore fish with japanese","speed":"0.294 - 0.336 F/s","note":"Japanese have a bonus to their fishing ship fishing speeds 5% in Dark, 10% in Feudal, 15% in Castle and 20% in Imperial. These correspond to 0.294 F/s in Dark age, 0.308 F/s in Feudal Age, 0.322 F/s in Castle age and 0.336 F/s in Imperial Age. Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance."},{"type":"Food","source":"Fish traps with japanese","speed":"0.375 - 0.407 F/s","note":"Usually used fish has run out. Gives quite good wood to food ratio. Japanese get faster fishing ship by 5% in each age. Experimental results - 0.375 F/s in Feudal, 0.391 F/s in Castle and 0.407 F/s in Imperial age (Tests)."},{"type":"Food","source":"Fish traps","speed":"0.342 F/s","note":"Usually used once fish has run out. Gives quite good wood to food ratio. In realistic tests 0.342 F/s (when directly adjacent to the dock)."},{"type":"Wood","source":"Chopping","speed":"0.388 - 0.615 W/s","note":"0.466 W/s after Double-Bit Axe (x1.2), 0.559 W/s after Bow Saw (x1.2) and 0.615 W/s after Two-Man Saw (x1.1). Wood is harvested from trees. Obviously, not every forest is close to a Town Center, so a Lumber Mill (or another Town Center) is an almost obligatory requisite for an efficient wood gathering."},{"type":"Wood","source":"Chopping with Celts","speed":"0.444 - 0.643 W/s","note":"Celtic lumberjacks start with a 15% bonus efficiency. 0.535 W/s after Double-Bit Axe (x1.2) and 0.643 W/s after Bow Saw (x1.2)"},{"type":"Gold","source":"Mining","speed":"0.379 - 0.501 G/s","note":"0.436 G/s after Gold mining (x1.15) and 0.501 G/s after Gold Shaft Mining (x1.15). Gold is possibly the most important resource in the game, because without gold, only three military units types are available (Spear line, Skirmisher line and Scout line, which are cheerfully called as 'trash'). Gold mining is the primary gold source; and the initial mine clump, has seven mines. Relics can be found in the map, and each grant a permanent trickle of gold."},{"type":"Gold","source":"Mining with Turks","speed":"0.435 - 0.576 G/s","note":"Turks get 15 % gold mining bonus (gold mining work rate x 1.15). 0.501 G/s after Gold mining (x1.15) and 0.576 G/s after Gold Shaft Mining (x1.15)."},{"type":"Gold","source":"Relic","speed":"0.5 G/s","note":"Relics generate 1 gold every 2 seconds"},{"type":"Gold","source":"Relic with Aztecs","speed":"0.67 G/s","note":"Aztecs get a 33% gold generation bonus."},{"type":"Stone","source":"Mining","speed":"0.359 - 0.475 S/s","note":"0.413 S/s after Stone mining (x1.15) and 0.475 S/s after Stone Shaft Mining (x1.15). Stone can only be harvested from stone mines. Stone isn't used for units, but some technologies require it. It's greatest use is obviously for creating buildings. Town Centers, Outposts, Castles, Towers, Walls, Gates and Wonders all require large amounts of stone."},{"type":"Stone","source":"Mining with Koreans","speed":"0.431 - 0.570 S/s","note":"Korean stone miners get a 20% work rate bonus (1.2 x work rate). 0.495 S/s after Stone mining (x1.15) and 0.570 S/s after Stone Shaft Mining (x1.15)."}]} 2 | -------------------------------------------------------------------------------- /dist/stats/dlc_civilizations.json: -------------------------------------------------------------------------------- 1 | {"data":[{"name":"Aztecs","ver":"c","ct":"Infantry and Monk","uu":"Jaguar Warrior","ut":"Atlatl(Castle),
Garland Wars(Imperial)","tb":"Relics generate +33% gold","bs":"","tt":"aztecs"},{"name":"Britons","ver":"k","ct":"Foot archer","uu":"Longbowman","ut":"Yeomen(Castle),
Warwolf(Imperial)","tb":"Archery Ranges work 20% faster","bs":"","tt":"britons"},{"name":"Byzantines","ver":"k","ct":"Defensive","uu":"Cataphract","ut":"Greek Fire(Castle),
Logistica(Imperial)","tb":"Monks +50% heal speed","bs":"","tt":"byzantines"},{"name":"Celts","ver":"k","ct":"Infantry","uu":"Woad Raider","ut":"Stronghold(Castle),
Furor Celtica(Imperial)","tb":"Siege Workshops work 20% faster.","bs":"","tt":"celts"},{"name":"Chinese","ver":"k","ct":"Archer","uu":"Chu Ko Nu","ut":"Great Wall(Castle),
Rocketry(Imperial)","tb":"Farms provide +45 food.","bs":"","tt":"chinese"},{"name":"Franks","ver":"k","ct":"Cavalry","uu":"Throwing Axeman","ut":"Chivalry(Castle),
Bearded Axe(Imperial)","tb":"Knights have +2 line of sight","bs":"","tt":"franks"},{"name":"Goths","ver":"k","ct":"Infantry","uu":"Huskarl","ut":"Anarchy(Castle), Perfusion(Imperial)","tb":"Barracks operate 20% faster","bs":"","tt":"goths"},{"name":"Huns","ver":"c","ct":"Cavalry","uu":"Tarkan","ut":"Marauders(Castle),
Atheism(Imperial)","tb":"Stables are 20% faster.","bs":"","tt":"huns"},{"name":"Japanese","ver":"k","ct":"Infantry","uu":"Samurai","ut":"Yasama(Castle),
Kataparuto(Imperial)","tb":"Galleys have +50% line of sight","bs":"","tt":"japanese"},{"name":"Koreans","ver":"c","ct":"Tower and naval","uu":"War Wagon, Turtle Ship","ut":"Panokseon(Castle), Shinkichon(Imperial)","tb":"Mangonel line minimum range reduced to 1 (from 3)","bs":"","tt":"koreans"},{"name":"Mayans","ver":"c","ct":"Archer","uu":"Plumed Archer","ut":"Obsidian Arrow(Castle),
El Dorado(Imperial)","tb":"Walls are 50% cheaper","bs":"","tt":"mayans"},{"name":"Mongols","ver":"k","ct":"Cavalry Archer","uu":"Mangudai","ut":"Nomads(Castle),
Drill(Imperial)","tb":"Scout line has +2 LOS","bs":"","tt":"mongols"},{"name":"Persians","ver":"k","ct":"Cavalry","uu":"War Elephant","ut":"Boiling Oil(Castle),
Mahouts(Imperial)","tb":"Knights have +2 attack versus Archers","bs":"","tt":"persians"},{"name":"Saracens","ver":"k","ct":"Camel and naval","uu":"Mameluke","ut":"Madrasah(Castle),
Zealotry(Imperial)","tb":"Foot archers have +2 attack bonus against buildings","bs":"","tt":"saracens"},{"name":"Spanish","ver":"c","ct":"Gunpowder and Monk","uu":"Conquistador, Missionary","ut":"Inquisition(Castle),
Supremacy(Imperial)","tb":"Trade units generate +25% Gold","bs":"","tt":"spanish"},{"name":"Teutons","ver":"k","ct":"Infantry","uu":"Teutonic Knight","ut":"Ironclad(Castle),
Crenellations(Imperial)","tb":"Units are more resistant to conversion","bs":"","tt":"teutons"},{"name":"Turks","ver":"k","ct":"Gunpowder","uu":"Janissary","ut":"Sipahi(Castle),
Artillery(Imperial)","bs":"","tb":"Gunpowder units are created 20% faster","tt":"turks"},{"name":"Vikings","ver":"k","ct":"Infantry and naval","uu":"Berserk, Longboat","ut":"Chieftains(Castle),
Berserkergang(Imperial)","tb":"Docks are -15% cheaper","bs":"","tt":"vikings"},{"name":"Incas","ver":"f","ct":"Infantry","uu":"Kamayuk,
Slinger(Archery Range)","ut":"Andean Sling(Castle),
Couriers(Imperial)","tb":"Farms built 50% faster","bs":"","tt":"incas"},{"name":"Indians","ver":"f","ct":"Camel and gunpowder","uu":"Elephant Archer,
Imperial Camel(Stable)","ut":"Sultans(Castle),
Shatagni(Imperial)","tb":"Camels +6 attack vs buildings,
Mamelukes and Camel Archers +5 vs buildings","bs":"","tt":"indians"},{"name":"Italians","ver":"f","ct":"Archer and naval civilization","uu":"Genoese Crossbowman,
Condottiero(Barracks)","ut":"Pavise(Castle),
Silk Road(Imperial)","tb":"Condottiero available in imperial barracks","bs":"","tt":"italians"},{"name":"Magyars","ver":"f","ct":"Cavalry civilization","uu":"Magyar Huszar","ut":"Mercenaries(Castle),
Recurve bow(Imperial)","tb":"Foot archers (not skirmishers) +2 LOS","bs":"","tt":"magyars"},{"name":"Slavs","ver":"f","ct":"Infantry and Siege","uu":"Boyar","ut":"Orthodoxy(Castle),
Druzhina(Imperial)","tb":"Military buildings (barracks, archery ranges, siege workshops and stables) provide +5 population","bs":"","tt":"slavs"},{"name":"Portuguese","ver":"a","ct":"Naval and Gunpowder","uu":"Organ Gun, Caravel (dock)","ut":"Carrack(Castle),
Arquebus(Imperial)","tb":"Free cartography from Dark Age","bs":"","tt":"portuguese"},{"name":"Ethiopians","ver":"a","ct":"Archer","uu":"Shotel Warrior","ut":"Royal Heirs(Castle),
Torsion Engines(Imperial)","tb":"Towers, outposts +3 LOS","bs":"","tt":"ethiopians"},{"name":"Malians","ver":"a","ct":"Infantry","uu":"Gbeto","ut":"Tigui(Castle),
Farimba(Imperial)","tb":"University works 1.8x faster (80% faster)","bs":"","tt":"malians"},{"name":"Berbers","ver":"a","ct":"Cavalry and Naval","uu":"Camel Archer, Genitour(archery range)","ut":"Kasbah(Castle),
Maghrabi Camels(Imperial)","tb":"Genitour available in Archery Range","bs":"","tt":"berbers"},{"name":"Burmese","ver":"r","ct":"Monk and Elephant","uu":"Arambai","ut":"Howdah(Castle),
Manipur Cavalry(Imperial)","tb":"Relics visible on map (3x3 square, all visible)","bs":"","tt":"burmese"},{"name":"Khmer","ver":"r","ct":"Siege and Elephant","uu":"Ballista Elephant","ut":"Tusk Swords(Castle),
Double Crossbow(Imperial)","tb":"Scorpions +1 range","bs":"","tt":"khmer"},{"name":"Malay","ver":"r","ct":"Naval","uu":"Karambit Warrior","ut":"Thalassocracy(Castle),
Forced Levy(Imperial)","tb":"Docks 2x LOS","bs":"","tt":"malay"},{"name":"Vietnamese","ver":"r","ct":"Archer","uu":"Rattan Archer, Imperial Skirmisher(archery range)","ut":"Chatras(Castle),
Paper Money(Imperial)","tb":"Access to Imperial Skirmisher upgrade","bs":"","tt":"vietnamese"}]} 2 | -------------------------------------------------------------------------------- /dist/stats/dlc_gathering.json: -------------------------------------------------------------------------------- 1 | {"data":[{"type":"Food","source":"Foraging","speed":"0.310 F/s","note":"Forage bushes are usually used at the game as second or third food option, before farms. Very often a Mill is build close to it, fastening the gathering. However, bushes are very vulnerable to overcrowding, decreasing the productivity."},{"type":"Food","source":"Livestock","speed":"0.330 F/s","note":"Includes sheep, turkey, cow and goat. Livestock have a interesting attribute: they can be positioned underneath the Town Center, nullifying the walk time. Usually only two livestock are placed in the Town Center per time (yes, this requires some micromanagement and experience). Probably, the only downside is that you have to search for them."},{"type":"Food","source":"Livestock with Britons","speed":"0.408 F/s","note":"Includes sheep, turkey, cow and goat. Livestock are specially important for Britons. Finding about 12-14 livestock on land nomad can be enough for them to very quickly reach the Castle Age."},{"type":"Food","source":"Farming","speed":"0.33 - 0.41 F/s","note":"0.33 F/s without upgrades, 0.38 F/s with Wheelbarrow+Heavy Plow, 0.41 F/s after Hand Cart (Tests). The real farming speed also depends on the walking distance and villager speed and carrying capacity (wheelbarrow and handcart). They require wood and a mill. Also, farms can be upgraded with the Horse Collar, Heavy Plow and Crop Rotation, to increase a maximum amount of food. A player needs to have caution when placing them to have the optimal results!"},{"type":"Food","source":"Farming with Mayans","speed":"0.32 - 0.39 F/s","note":"0.32 F/s without upgrades, 0.35 F/s with Wheelbarrow+Heavy Plow, 0.39 F/s after Hand Cart (Tests).
\"Mayan farmers effectively work 15% slower, however, because a lot of the farming is actually 'running around on the farm', the real effect is roughly 5% slower.\"(cysion)"},{"type":"Food","source":"Farming with Aztecs","speed":"0.38 - 0.42 F/s","note":"0.38 F/s without upgrades, 0.40 F/s with Wheelbarrow+Heavy Plow, 0.42 F/s after Hand Cart (Tests). This speed improvement is due to the +5 carrying capacity."},{"type":"Food","source":"Eatable predators","speed":"0.41 F/s","note":"Includes wild boars and elephants. These animals fight back when attacked, althought they rush the villagers who shot at them blindly. This way they can be lured to the Town Center to nullify the walking time, pretty much like livestock, except that you cannot actively control them. Most random maps have 2 of them close to your city, which are very useful. In some cases, it might be necessary to research Loom before luring to avoid the villager dying to the boar."},{"type":"Food","source":"Eatable predators with Mongols","speed":"0.610 F/s","note":"Includes wild boars and elephants. Mongol hunters receive a bonus to gather food faster from these animals."},{"type":"Food","source":"Prey animals","speed":"0.41 F/s","note":"Include deer, zebras and ostriches. These animals, unlike predators, flee when attacked, or when a unit comes near them. Because of this attribute, it's quite difficult to lure them closer to the Town Center, althought a Scout can do the trick. But, usually, players build a Mill close to the pocket. There are usually 2 pockets of prey per player in a random game."},{"type":"Food","source":"Prey animals with Mongols","speed":"0.610 F/s","note":"Include deer, zebras and ostriches. Mongol hunters receive a bonus to gather food faster from these animals."},{"type":"Food","source":"Fishing with villagers","speed":"0.43 F/s","note":"The type of fish (deep or shore) makes no difference in speed. Fishing shore fish with villagers is faster than with Fishing Ships, but has the obvious disadvantage of only being able to fish near the shore. Also, before the researching of wheelbarrow they can't carry more than 10, whilst ships can carry 15 units. Also, they usually require a mill nearby, because the Town Center is usually far away."},{"type":"Food","source":"Fishing deep fish","speed":"0.49 - 0.604 F/s","note":"0.604 F/s with the Gillnets technology. Ship fishing is a good alternate in maps that has lakes and seas. Sea economy expand very quickly, when compared to villager based economies. They can expand even in Dark Age, whilst villager economies show great expansion only from the Castle Age onwards."},{"type":"Food","source":"Fishing deep fish with japanese","speed":"0.511 - 0.726 F/s","note":"Japanese have a bonus to their fishing ship work speed: 5% in Dark, 10% in Feudal, 15% in Castle, 20% in Imperial and Gillnets also boosts the gathering rate. These correspond to 0.511 F/s in Dark age, 0.536 F/s in Feudal Age, 0.559 F/s in Castle age, 0.692 F/s with Gillnets, 0.585 F/s in Imperial Age and 0.726 F/s with Gillnets in Imperial Age (Tests). Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance."},{"type":"Food","source":"Fishing shore fish","speed":"0.280 - 0.348 F/s","note":"Fishing shore fish with fishing ships should be avoided and only using it if deep fish is very far. In tests 0.280 F/s and 0.348 F/s with Gillnets (Fish Traps being the better alternative when investing into Gillnets)."},{"type":"Food","source":"Fishing shore fish with japanese","speed":"0.294 - 0.415 F/s","note":"Japanese have a bonus to their fishing ship work speed: 5% in Dark, 10% in Feudal, 15% in Castle and 20% in Imperial and Gillnets also boosts the gathering rate (Though Fish Traps are usually the better alternative when investing into Gillnets). These values correspond to 0.294 F/s in Dark age, 0.308 F/s in Feudal Age, 0.322 F/s in Castle age, 0.398 F/s with Gillnets, 0.336 F/s in Imperial Age and 0.415 F/s with Gillnets in Imperial Age. Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance."},{"type":"Food","source":"Fish traps with japanese","speed":"0.375 - 0.506 F/s","note":"Usually used fish has run out. Gives quite good wood to food ratio. Japanese get faster working fishing ships by 5% in each age, and the Gillnets tech further boosts the rate, making them faster than Farms for Japanese. Experimental results - 0.375 F/s in Feudal, 0.391 F/s in Castle, 0.486 F/S with Gillnets, 0.407 F/s in Imperial age and 0.506 F/s with Gillnets in Imperial Age (Tests)."},{"type":"Food","source":"Fish traps","speed":"0.342 - 0.425 F/s","note":"Usually used fish has run out. Gives quite good wood to food ratio. The Gillnets tech further increases gather rate so that they are similar to Farms. In realistic tests 0.342 (when directly adjacent to the dock) or 0.425 F/s with Gillnets."},{"type":"Wood","source":"Chopping","speed":"0.388 - 0.615 W/s","note":"0.466 W/s after Double-Bit Axe (x1.2), 0.559 W/s after Bow Saw (x1.2) and 0.615 W/s after Two-Man Saw (x1.1). Wood is harvested from trees. Obviously, not every forest is close to a Town Center, so a Lumber Mill (or another Town Center) is an almost obligatory requisite for an efficient wood gathering."},{"type":"Wood","source":"Chopping with Celts","speed":"0.444 - 0.643 W/s","note":"Celtic lumberjacks start with a 15% bonus efficiency. 0.535 W/s after Double-Bit Axe (x1.2) and 0.643 W/s after Bow Saw (x1.2)"},{"type":"Gold","source":"Mining","speed":"0.379 - 0.501 G/s","note":"0.436 G/s after Gold mining (x1.15) and 0.501 G/s after Gold Shaft Mining (x1.15). Gold is possibly the most important resource in the game, because without gold, only three military units types are available (Spear line, Skirmisher line and Scout line, which are cheerfully called as 'trash'). Gold mining is the primary gold source; and the initial mine clump, has seven mines. Relics can be found in the map, and each grant a permanent trickle of gold."},{"type":"Gold","source":"Mining with Turks","speed":"0.455 - 0.601 G/s","note":"Turks get 20 % gold mining bonus (gold mining work rate x 1.2). 0.523 G/s after Gold mining (x1.15) and 0.601 G/s after Gold Shaft Mining (x1.15)."},{"type":"Gold","source":"Relic","speed":"0.5 G/s","note":"Relics generate 1 gold every 2 seconds"},{"type":"Gold","source":"Relic with Aztecs","speed":"0.67 G/s","note":"Aztecs get a 33% gold generation bonus."},{"type":"Stone","source":"Mining","speed":"0.359 - 0.475 S/s","note":"0.413 S/s after Stone mining (x1.15) and 0.475 S/s after Stone Shaft Mining (x1.15). Stone can only be harvested from stone mines. Stone isn't used for units, but some technologies require it. It's greatest use is obviously for creating buildings. Town Centers, Outposts, Castles, Towers, Walls, Gates and Wonders all require large amounts of stone."},{"type":"Stone","source":"Mining with Koreans","speed":"0.431 - 0.570 S/s","note":"Korean stone miners get a 20% work rate bonus (1.2 x work rate). 0.495 S/s after Stone mining (x1.15) and 0.570 S/s after Stone Shaft Mining (x1.15)."},{"type":"Gold","source":"Relics with Indians after Sultans","speed":"0.55 - 0.73 G/s","note":"The unique Tech \"Sultans\" boosts all gold income by 10%. This makes their relics gather 0.55 G/s, or 0.73 G/s with an Aztec ally."},{"type":"Gold","source":"Mining with Indians after Sultans","speed":"0.417 - 0.551 G/s","note":"The unique Tech \"Sultans\" boosts all gold income by 10%. 0.479 G/s after Gold mining (x1.15) and 0.551 G/s after Gold Shaft Mining (x1.15)."},{"type":"Food","source":"Foraging with Franks","speed":"0.3875 F/s","note":"Franks get 25% faster berry gathering. This bonus makes it faster than gathering food from sheep."},{"type":"Food","source":"Fishing with villagers with Indians","speed":"0.4945 F/s","note":"Indians get a 15% gathering bonus. Their fishermen can also carry +15 food, so a total of 25 food"},{"type":"Food","source":"Farming with slavs","speed":"0.39 - 0.46 F/s","note":"0.37 F/s without upgrades, 0.43 F/s with Wheelbarrow+Heavy Plow, 0.46 F/s after Hand Cart. Slavs get a 15% bonus to their farming rate. Values are estimated, not tested exactly."},{"type":"Food","source":"Farming with berbers","speed":"0.34 - 0.41 F/s","note":"0.39 F/s without upgrades, 0.41 F/s with Wheelbarrow+Heavy Plow, 0.41 F/s after Hand Cart (Tests). Berber villagers walk 10% faster, which makes them spend more time actually collecting food from a farm and thus boosts their gathering rate by a small 1-3%"}]} 2 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const gulp = require('gulp'); 2 | const fs = require('fs') 3 | const concat = require('gulp-concat'); 4 | const replace = require('gulp-replace') 5 | const cleanCSS = require('gulp-clean-css'); 6 | const autoprefixer = require('gulp-autoprefixer'); 7 | const stripDebug = require('gulp-strip-debug'); 8 | const rename = require('gulp-rename'); 9 | const run = require('gulp-run'); 10 | const spawn = require('gulp-spawn'); 11 | 12 | var getPackageJson = function () { 13 | return JSON.parse(fs.readFileSync('./package.json', 'utf8')); 14 | }; 15 | 16 | const devBuild = ((process.env.NODE_ENV || 'development').trim().toLowerCase() === 'development'); 17 | const releaseDir = devBuild ? 'dist/' : 'dist/' 18 | const version = devBuild ? 'dev' : getPackageJson().version 19 | var nodeDir = "node_modules/"; 20 | 21 | gulp.task('watch', function () { 22 | // gulp.watch('stats/*', ['build']); 23 | }); 24 | 25 | 26 | function buildStats() { 27 | return gulp.src('src/stats/@(aoc|dlc)_*.js') // get input files. 28 | .pipe(spawn({ 29 | cmd: "node", 30 | args: [], 31 | opts: { cwd: './src/stats', env: { STATS_PRINT: true } }, 32 | filename: function (base, _ext) { 33 | return base + ".json" 34 | } 35 | })) 36 | .pipe(gulp.dest(`${releaseDir}/stats/`)) // profit. 37 | } 38 | 39 | function buildAll(cb) { 40 | //change version 41 | gulp.src('src/index.html', { base: 'src' }) 42 | .pipe(replace(/%VERSION%/g, version)) 43 | .pipe(gulp.dest(`${releaseDir}`)) 44 | gulp.src('src/compare.html', { base: 'src' }) 45 | .pipe(replace(/%VERSION%/g, version)) 46 | .pipe(gulp.dest(`${releaseDir}`)) 47 | gulp.src('src/favicon.png', { base: 'src' }) 48 | .pipe(gulp.dest(`${releaseDir}`)) 49 | 50 | gulp.src('src/js/main.js', { base: 'src' }) 51 | .pipe(rename(`main.${version}.js`)) 52 | .pipe(gulp.dest(`${releaseDir}/js`)) 53 | 54 | gulp.src('src/js/compare.js', { base: 'src' }) 55 | .pipe(rename(`compare.${version}.js`)) 56 | .pipe(gulp.dest(`${releaseDir}/js`)) 57 | 58 | gulp.src('src/css/style.css', { base: 'src' }) 59 | .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9')) 60 | .pipe(rename(`style.${version}.css`)) 61 | .pipe(gulp.dest(`${releaseDir}/css`)) 62 | 63 | gulp.src('src/images/**', { base: 'src' }) 64 | .pipe(gulp.dest(`${releaseDir}`)) 65 | 66 | // concat all vendor css 67 | gulp.src([nodeDir + 'bootstrap/dist/css/bootstrap.min.css', 68 | nodeDir + 'font-awesome/css/font-awesome.min.css', 69 | //nodeDir + 'drmonty-datatables/css/jquery.dataTables.min.css', 70 | nodeDir + 'drmonty-datatables/css/dataTables.bootstrap.min.css', 71 | nodeDir + 'drmonty-datatables-responsive/css/responsive.bootstrap.css', 72 | nodeDir + 'drmonty-datatables-fixedheader/css/fixedHeader.bootstrap.css', 73 | nodeDir + 'select2/dist/css/select2.min.css', 74 | nodeDir + 'tooltipster/dist/css/tooltipster.bundle.css', 75 | nodeDir + 'tooltipster/dist/css/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.css'], 76 | { base: nodeDir }) 77 | //.pipe(cleanCSS()) 78 | .pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9')) 79 | .pipe(concat(`vendor.min.${version}.css`)) 80 | .pipe(gulp.dest(`${releaseDir}css`)) 81 | 82 | //copy over bootstrap fonts 83 | gulp.src(nodeDir + 'bootstrap/fonts/*', { base: nodeDir + 'bootstrap/fonts' }) 84 | .pipe(gulp.dest(`${releaseDir}fonts/`)); 85 | 86 | //copy over font-awesome fonts 87 | gulp.src(nodeDir + 'font-awesome/fonts/*', { base: nodeDir + 'font-awesome/fonts' }) 88 | .pipe(gulp.dest(`${releaseDir}fonts/`)); 89 | 90 | //merge all javascript 91 | gulp.src([nodeDir + 'jquery/dist/jquery.min.js', 92 | nodeDir + 'bootstrap/dist/js/bootstrap.min.js', 93 | nodeDir + 'drmonty-datatables/js/jquery.dataTables.min.js', 94 | nodeDir + 'drmonty-datatables/js/dataTables.bootstrap.min.js', 95 | nodeDir + 'drmonty-datatables-fixedheader/js/dataTables.fixedHeader.js', 96 | nodeDir + 'drmonty-datatables-responsive/js/dataTables.responsive.js', 97 | nodeDir + 'drmonty-datatables-responsive/js/responsive.bootstrap.js', 98 | nodeDir + 'select2/dist/js/select2.min.js', 99 | nodeDir + 'js-cookie/src/js.cookie.js', 100 | nodeDir + 'tooltipster/dist/js/tooltipster.bundle.min.js', 101 | nodeDir + 'sticky-table-headers/js/jquery.stickytableheaders.min.js', 102 | nodeDir + 'vue/dist/vue.min.js' 103 | ], 104 | { base: nodeDir }) 105 | .pipe(concat(`vendor.${version}.js`)) 106 | .pipe(stripDebug()) 107 | .pipe(gulp.dest(`${releaseDir}js/`)); 108 | 109 | cb() 110 | } 111 | 112 | exports.stats = buildStats 113 | exports.resources = buildAll 114 | exports.default = gulp.parallel(buildAll, buildStats) 115 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aoe2stats", 3 | "version": "1.0.1", 4 | "description": "Age of Empires II statistics [website](http://aoe2stats.net).", 5 | "main": "", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1", 8 | "dev": "gulp && live-server dist", 9 | "build": "rimraf dist && cross-env NODE_ENV=production gulp", 10 | "release": "git subtree push --prefix dist origin gh-pages", 11 | "version": "npm run build && git add -A dist", 12 | "postversion": "git push && git push --tags && npm run release" 13 | }, 14 | "repository": { 15 | "type": "git", 16 | "url": "git+https://github.com/aocpip/aoe2stats.git" 17 | }, 18 | "author": "", 19 | "license": "MIT", 20 | "bugs": { 21 | "url": "https://github.com/aocpip/aoe2stats/issues" 22 | }, 23 | "homepage": "https://github.com/aocpip/aoe2stats#readme", 24 | "dependencies": { 25 | "bootstrap": "^3.3.7", 26 | "cross-env": "^7.0.3", 27 | "drmonty-datatables": "^1.10.12", 28 | "drmonty-datatables-fixedheader": "^3.1.2", 29 | "drmonty-datatables-responsive": "^2.1.0", 30 | "font-awesome": "^4.7.0", 31 | "gulp": "4.0.2", 32 | "gulp-autoprefixer": "^7.0.0", 33 | "gulp-clean-css": "^4.3.0", 34 | "gulp-concat": "2.6.1", 35 | "gulp-rename": "2.0.0", 36 | "gulp-replace": "^1.0.0", 37 | "gulp-run": "1.7.1", 38 | "gulp-spawn": "^0.4.5", 39 | "gulp-strip-debug": "3.0.0", 40 | "jquery": "^3.1.1", 41 | "js-cookie": "^2.1.3", 42 | "live-server": "^1.2.1", 43 | "lodash": "^4.17.21", 44 | "rimraf": "^3.0.2", 45 | "select2": "^4.0.3", 46 | "sticky-table-headers": "^0.1.19", 47 | "through2": "^4.0.2", 48 | "tooltipster": "^4.1.6", 49 | "vue": "^2.6.12" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/compare.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | AoCStats: Age of Empires 2 Statistics 11 | 12 | 13 | 22 | 23 | 36 | 37 | 38 | 39 | 40 | 41 |
42 | 43 | 44 | 45 | 53 | 54 |
55 |

Re-write work in progress. Thank you for your patience.

56 | 57 |
58 |
59 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /src/css/style.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | html, body { 4 | height: 100%; 5 | margin: 0; 6 | padding: 0; 7 | } 8 | 9 | body { 10 | background-color: #e9ece5; 11 | color: #3b3a36; 12 | } 13 | 14 | .searchable{ 15 | cursor: pointer; 16 | color: #337ab7; 17 | } 18 | 19 | .searchbox { 20 | float: right; 21 | display: inline-block; 22 | 23 | margin: 2px; 24 | margin-right: 24px; 25 | 26 | font-size: 24px; 27 | } 28 | 29 | .searchbox input { 30 | color: black; 31 | } 32 | 33 | /* 34 | .anchors, .title { 35 | float: left; 36 | display: inline-block; 37 | } 38 | */ 39 | 40 | .wrapper { 41 | min-height: 100%; 42 | height: auto !important; 43 | height: 100%; 44 | margin: 0 auto -132px; /* the bottom margin is the negative value of the footer's height */ 45 | } 46 | 47 | #header { 48 | position: fixed; 49 | top: 0; 50 | z-index: 1000; 51 | right: 0; 52 | left: 0; 53 | } 54 | 55 | #header-push { 56 | float: left; 57 | } 58 | 59 | span.clear{ 60 | clear: both; 61 | display: block; 62 | } 63 | 64 | .header { 65 | display: block; 66 | padding: 8px; 67 | background-color: #1d2120; 68 | color: white; 69 | } 70 | 71 | span.title { 72 | color: white; 73 | font-size: 20px; 74 | margin: 0px 16px; 75 | padding-top: 8px; 76 | display: inline-block; 77 | } 78 | 79 | 80 | .navbar-inverse .navbar-nav>.active>a, 81 | .navbar-inverse .navbar-nav>.active>a:focus, 82 | .navbar-inverse .navbar-nav>.active>a:hover { 83 | color: #fff; 84 | background-color: #080808; 85 | font-weight: bold; 86 | } 87 | 88 | .navbar-header a, .navbar-nav a{ 89 | cursor: pointer; 90 | } 91 | 92 | .version-switcher { 93 | display: inline-block; 94 | float: left; 95 | } 96 | 97 | .anchors { 98 | margin: 8px; 99 | } 100 | 101 | .anchors a{ 102 | font-weight: bold; 103 | color: rgba(179, 194, 191, 0.5); 104 | font-size: 20px; 105 | margin: 0px 8px; 106 | display: inline-block; 107 | cursor: pointer; 108 | } 109 | 110 | .anchors .title-active{ 111 | color: white; 112 | } 113 | 114 | .header a:hover { 115 | color: #C4B5B1; 116 | } 117 | 118 | .footer a { 119 | color: #4D6762; 120 | font-weight: bold; 121 | } 122 | 123 | .footer a:hover { 124 | color: #736862; 125 | } 126 | 127 | 128 | .footer, .push { 129 | width: 100%; 130 | height: 124px; 131 | } 132 | 133 | #content { 134 | width: 100%; 135 | padding-top: 16px; 136 | } 137 | 138 | 139 | @media screen and (min-width: 1280px) { 140 | #content { 141 | width: 1280px; 142 | margin-left: auto; 143 | margin-right: auto; 144 | } 145 | } 146 | 147 | #logos { 148 | margin: 4px auto; 149 | position: relative; 150 | display: block; 151 | min-height: 72px; 152 | max-width: 800px; 153 | padding: 4px 20px; 154 | background: none; 155 | margin-top: 0px; 156 | text-align: center; 157 | } 158 | 159 | #logos div { 160 | vertical-align: middle; 161 | } 162 | 163 | #logos > div { 164 | display: block; 165 | } 166 | 167 | #logos .box-background { 168 | -moz-border-radius: 50px / 32px ; 169 | -webkit-border-radius: 50px / 32px; 170 | border-radius: 50px / 32px; 171 | } 172 | 173 | 174 | #logos img { 175 | position: relative; 176 | top: 50%; 177 | /* 178 | -webkit-transform: translateY(-50%); 179 | -ms-transform: translateY(-50%); 180 | transform: translateY(-50%);*/ 181 | } 182 | 183 | .right-aligned div{ 184 | float:right; 185 | text-align: right; 186 | } 187 | 188 | .left-aligned div{ 189 | float:left; 190 | text-align: left; 191 | } 192 | 193 | .aocversion > span{ 194 | min-width: 260px; 195 | } 196 | 197 | .select2-container .select2-selection--single { 198 | height: 32px; 199 | margin-top: 4px; 200 | } 201 | 202 | .version-item { 203 | vertical-align: middle; 204 | font-size: 16px; 205 | font-weight: bold; 206 | } 207 | 208 | .version-item img { 209 | display: inline-block; 210 | vertical-align: middle; 211 | padding: 2px 0px; 212 | } 213 | 214 | .version-item .helper { 215 | display: inline-block; 216 | height: 100%; 217 | vertical-align: middle; 218 | } 219 | .select2-container--default .select2-selection--single .select2-selection__arrow { 220 | top: 4px; 221 | } 222 | 223 | .section { 224 | margin: 8px; 225 | margin-left: 16px; 226 | font-size: 36px; 227 | font-weight: bold; 228 | } 229 | 230 | #voobly-logo img { 231 | background-color: rgba(0,0,0,0.54); 232 | border-radius: 20px; 233 | -webkit-box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.54); 234 | -moz-box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.54); 235 | box-shadow: 0px 0px 5px 3px rgba(0,0,0,0.54); 236 | } 237 | 238 | a { 239 | text-decoration: none; 240 | } 241 | 242 | .bold-cell { 243 | font-weight: bold; 244 | } 245 | 246 | table.dataTable tbody tr.group { 247 | background-color: #b3c2bf; 248 | color: white; 249 | } 250 | 251 | table.dataTable tbody tr.group td.group-title { 252 | font-size: 18px; 253 | cursor: pointer; 254 | } 255 | 256 | table.dataTable tbody tr.group:hover { 257 | background-color: #C1CDCB; 258 | } 259 | 260 | table.dataTable tbody tr.group-collapsed { 261 | background-color: #7A958F; 262 | } 263 | 264 | .section { 265 | display: inline-block; 266 | margin-top: 16px; 267 | } 268 | 269 | .dataTables_filter, .dataTables_info { display: none; } 270 | 271 | #content > div { 272 | padding-top: 50px; 273 | } 274 | 275 | #legend { 276 | padding-top: 0px !important; 277 | } 278 | 279 | #legend table td { 280 | padding: 4px; 281 | } 282 | 283 | #empty { 284 | text-align: center; 285 | font-size: 24px; 286 | } 287 | 288 | table.fixedHeader-floating { 289 | 290 | background-color: #e9ece5 !important; 291 | 292 | } 293 | 294 | .detail-head { 295 | font-style: italic; 296 | font-size: 16px; 297 | } 298 | 299 | table.detail-table, table.detail-table tr, table.detail-table tbody tr{ 300 | background-color: #e9ece5; 301 | } 302 | 303 | .table td.child { 304 | padding: 0; 305 | } 306 | 307 | .table td.child div { 308 | padding: 8px; 309 | background-color: white; 310 | } 311 | 312 | td.child tr > td:first-child { 313 | font-weight: bold; 314 | } 315 | 316 | .version_icon { 317 | display: inline-block; 318 | width: 16px; 319 | height: 16px; 320 | } 321 | 322 | .version_icon span { 323 | display: none; 324 | } 325 | 326 | .icon_dlc { 327 | background-image: url('../images/aocversion/dlc_16.png'); 328 | } 329 | 330 | .icon_kings { 331 | background-image: url('../images/aocversion/aok_16.png'); 332 | } 333 | 334 | .icon_conquerors { 335 | background-image: url('../images/aocversion/aoc_16.png'); 336 | } 337 | 338 | .icon_forgotten { 339 | background-image: url('../images/aocversion/aof_16.png'); 340 | } 341 | 342 | .icon_african { 343 | background-image: url('../images/aocversion/aoa_16.png'); 344 | } 345 | 346 | .icon_rajas { 347 | background-image: url('../images/aocversion/aor_16.png'); 348 | } 349 | 350 | .icon_de { 351 | background-image: url('../images/aocversion/de_16.png'); 352 | } 353 | 354 | div.availability span { 355 | display: inline-block; 356 | margin: 2px; 357 | border-radius: 2px; 358 | padding: 4px; 359 | } 360 | 361 | div.availability span.civ-avail { 362 | background-color: #A1DBA1; 363 | font-size: 12px; 364 | } 365 | 366 | div.availability span.civ-noavail { 367 | background-color: #E4ACAC; 368 | font-size: 10px; 369 | } 370 | 371 | .group .group-title:before { 372 | 373 | font-size: 14px; 374 | height: 16px; 375 | width: 16px; 376 | margin-top: 4px; 377 | margin-left: 4px; 378 | margin-right: 8px; 379 | display: inline-block; 380 | color: #fff; 381 | border: 2px solid #fff; 382 | border-radius: 16px; 383 | box-shadow: 0 0 3px #444; 384 | box-sizing: content-box; 385 | font-family: 'Courier New',Courier,monospace; 386 | text-indent: 4px; 387 | line-height: 16px; 388 | content: '+'; 389 | background-color: #337ab7; 390 | } 391 | 392 | .parent .group-title:before { 393 | content: '-'; 394 | background-color: #d33333; 395 | } 396 | 397 | #compare-clear:hover { 398 | color: #111; 399 | } 400 | 401 | /* 402 | .navbar-fixed-top .navbar-right { 403 | margin-right: 0; 404 | } 405 | 406 | .navbar-fixed-top div.container-fluid { 407 | margin-left: 0; 408 | margin-right: 0; 409 | padding-left:; 410 | } 411 | */ 412 | 413 | table.stickyHeader thead, th.inverse{ 414 | background-color: #3b3a36; 415 | color: #e9ece5; 416 | } 417 | -------------------------------------------------------------------------------- /src/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/favicon.png -------------------------------------------------------------------------------- /src/images/Sorting icons.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/Sorting icons.psd -------------------------------------------------------------------------------- /src/images/age-of-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/age-of-logo.png -------------------------------------------------------------------------------- /src/images/aocversion/aoa_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aoa_16.png -------------------------------------------------------------------------------- /src/images/aocversion/aoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aoc.png -------------------------------------------------------------------------------- /src/images/aocversion/aoc_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aoc_16.png -------------------------------------------------------------------------------- /src/images/aocversion/aof_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aof_16.png -------------------------------------------------------------------------------- /src/images/aocversion/aofe.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aofe.jpg -------------------------------------------------------------------------------- /src/images/aocversion/aofe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aofe.png -------------------------------------------------------------------------------- /src/images/aocversion/aok_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aok_16.png -------------------------------------------------------------------------------- /src/images/aocversion/aor_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/aor_16.png -------------------------------------------------------------------------------- /src/images/aocversion/balance.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/balance.jpg -------------------------------------------------------------------------------- /src/images/aocversion/balance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/balance.png -------------------------------------------------------------------------------- /src/images/aocversion/de.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/de.png -------------------------------------------------------------------------------- /src/images/aocversion/de_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/de_16.png -------------------------------------------------------------------------------- /src/images/aocversion/dlc_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aocversion/dlc_16.png -------------------------------------------------------------------------------- /src/images/aoczone-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/aoczone-logo.png -------------------------------------------------------------------------------- /src/images/palette.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/palette.png -------------------------------------------------------------------------------- /src/images/palette_warm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/palette_warm.png -------------------------------------------------------------------------------- /src/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/sort_asc.png -------------------------------------------------------------------------------- /src/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /src/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/sort_both.png -------------------------------------------------------------------------------- /src/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/sort_desc.png -------------------------------------------------------------------------------- /src/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/aztecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/aztecs.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/britons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/britons.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/byzantines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/byzantines.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/celts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/celts.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/chinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/chinese.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/franks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/franks.png -------------------------------------------------------------------------------- /src/images/techtrees/aoc/goths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/aoc/goths.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/aztecs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/aztecs.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/berbers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/berbers.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/britons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/britons.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/burmese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/burmese.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/byzantines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/byzantines.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/celts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/celts.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/chinese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/chinese.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/ethiopians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/ethiopians.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/franks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/franks.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/goths.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/goths.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/huns.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/huns.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/incas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/incas.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/indians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/indians.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/italians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/italians.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/japanese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/japanese.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/khmer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/khmer.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/koreans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/koreans.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/magyars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/magyars.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/malay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/malay.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/malians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/malians.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/mayans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/mayans.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/mongols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/mongols.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/persians.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/persians.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/portuguese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/portuguese.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/saracens.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/saracens.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/slavs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/slavs.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/spanish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/spanish.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/teutons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/teutons.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/turks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/turks.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/vietnamese.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/vietnamese.png -------------------------------------------------------------------------------- /src/images/techtrees/dlc/vikings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/techtrees/dlc/vikings.png -------------------------------------------------------------------------------- /src/images/voobly-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aocpip/aoe2stats/0447b7748cf1f50e5dd918aed593dcbf08cf1269/src/images/voobly-logo.png -------------------------------------------------------------------------------- /src/js/compare.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('table.stickyHeader').stickyTableHeaders(); 3 | }); 4 | 5 | const ROW_TYPE = 0 6 | const ROW_NAME = 1 7 | const ROW_AGE = 2 8 | 9 | const ROW_SOURCE = 1 10 | const NOT_FOUND = { 11 | name: 'Not found' 12 | } 13 | 14 | const COLUMNS_ORDER = { 15 | 'type': "Type", 16 | 'ct': "Civilization type", 17 | 'ver': "Introduced in ", 18 | 'age': "Age", 19 | 'cost': "Cost", 20 | 'hp': "HP", 21 | 'bt': "Build time", 22 | 'time': "Research time", 23 | 'speed': "Gathering speed", 24 | 'fr': "Firing rate", 25 | 'ad': "Attack delay", 26 | 'mr': "Movement rate", 27 | 'los': "Line of sight", 28 | 'ra': "Range", 29 | 'at': "Attack", 30 | 'ar': "Armor (melee/pierce)", 31 | 'extra': "Extra", 32 | 'civb': "Civilization bonuses", 33 | 'uu': "Unique unit", 34 | 'ut': "Unique technology", 35 | 'tb': "Team bonus", 36 | 'bs': "Civilization bonuses", 37 | 'tt': "Techtree", 38 | 'note': "Note", 39 | 'for': "Technology for or Upgrades", 40 | 'GA': "Garrison or extra info", 41 | 'avail': "Available", 42 | 'noavail': "Not available" 43 | } 44 | 45 | const COLUMNS_FORMAT = { 46 | 'type': 'format_default', 47 | 'ct': 'format_default', 48 | 'ver': 'format_version', 49 | 'age': 'format_age', 50 | 'cost': 'format_default', 51 | 'hp': 'format_default', 52 | 'bt': 'format_default', 53 | 'speed': 'format_default', 54 | 'time': 'format_default', 55 | 'fr': 'format_default', 56 | 'ad': 'format_default', 57 | 'mr': 'format_default', 58 | 'los': 'format_default', 59 | 'ra': 'format_default', 60 | 'at': 'format_default', 61 | 'ar': 'format_default', 62 | 'extra': 'format_table', 63 | 'uu': 'format_default', 64 | 'ut': 'format_default', 65 | 'tb': 'format_default', 66 | 'bs': 'format_default', 67 | 'civb': 'format_table', 68 | 'note': 'format_default', 69 | 'for': 'format_default', 70 | 'GA': 'format_default', 71 | 'avail': 'format_available', 72 | 'noavail': 'format_not_available', 73 | 'tt': 'format_techtree' 74 | } 75 | 76 | Vue.component('default-item', { 77 | template: '{{value}}', 78 | props: ['value'] 79 | }) 80 | 81 | Vue.component('table-item-row', { 82 | props: ['head', 'value'], 83 | template: '{{head}}{{value}}' 84 | }) 85 | 86 | Vue.component('table-item', { 87 | props: ['data'], 88 | template: ` 89 | 90 | 96 |
97 | `, 98 | }) 99 | 100 | Vue.component('availability-item', { 101 | template: 'TBD availability' 102 | }) 103 | 104 | Vue.component('version-item', { 105 | template: 'TBD version' 106 | }) 107 | 108 | Vue.component('age-item', { 109 | template: 'TBD age' 110 | }) 111 | 112 | Vue.component('techtree-item', { 113 | template: 'TBD techtree' 114 | }) 115 | 116 | var table = new Vue({ 117 | name: "compare-table", 118 | data: function () { 119 | return { 120 | aocVersion: "aoc" 121 | }; 122 | }, 123 | created: function () { 124 | var urlParams = new URLSearchParams(window.location.search) 125 | if (urlParams.has('v')) { 126 | this.aocVersion = urlParams.get('v') 127 | } 128 | // Simple GET request using fetch 129 | fetch("/stats/aoc_units.json") 130 | .then(response => response.json()) 131 | .then(data => (this.totalVuePackages = data.total)); 132 | } 133 | }) 134 | 135 | -------------------------------------------------------------------------------- /src/stats/aoc_civilizations.js: -------------------------------------------------------------------------------- 1 | const {isMain} = require('./util') 2 | const contents = require('./aoc_civilizations.json') 3 | 4 | if (require.main === module || isMain()) { 5 | console.log(JSON.stringify(contents)) 6 | } 7 | 8 | module.exports = contents 9 | -------------------------------------------------------------------------------- /src/stats/aoc_civilizations.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "Aztecs", 5 | "ver": "c", 6 | "ct": "Infantry and Monk", 7 | "uu": "Jaguar Warrior", 8 | "ut": "Garland Wars", 9 | "tb": "Relics generate +33% gold", 10 | "bs": "", 11 | "tt": "aztecs" 12 | }, 13 | { 14 | "name": "Britons", 15 | "ver": "k", 16 | "ct": "Foot archer", 17 | "uu": "Longbowman", 18 | "ut": "Yeomen", 19 | "tb": "Archery Ranges work 20% faster", 20 | "bs": "", 21 | "tt": "britons" 22 | }, 23 | { 24 | "name": "Byzantines", 25 | "ver": "k", 26 | "ct": "Defensive", 27 | "uu": "Cataphract", 28 | "ut": "Logistica", 29 | "tb": "Monks +50% heal speed", 30 | "bs": "", 31 | "tt": "byzantines" 32 | }, 33 | { 34 | "name": "Celts", 35 | "ver": "k", 36 | "ct": "Infantry", 37 | "uu": "Woad Raider", 38 | "ut": "Furor Celtica", 39 | "tb": "Siege Workshops work 20% faster.", 40 | "bs": "", 41 | "tt": "celts" 42 | }, 43 | { 44 | "name": "Chinese", 45 | "ver": "k", 46 | "ct": "Archer", 47 | "uu": "Chu Ko Nu", 48 | "ut": "Rocketry", 49 | "tb": "Farms provide +45 food.", 50 | "bs": "", 51 | "tt": "chinese" 52 | }, 53 | { 54 | "name": "Franks", 55 | "ver": "k", 56 | "ct": "Cavalry", 57 | "uu": "Throwing Axeman", 58 | "ut": "Bearded Axe", 59 | "tb": "Knights have +2 line of sight", 60 | "bs": "", 61 | "tt": "franks" 62 | }, 63 | { 64 | "name": "Goths", 65 | "ver": "k", 66 | "ct": "Infantry", 67 | "uu": "Huskarl", 68 | "ut": "Anarchy(Castle), Perfusion(Imperial)", 69 | "tb": "Barracks operate 20% faster", 70 | "bs": "", 71 | "tt": "goths" 72 | }, 73 | { 74 | "name": "Huns", 75 | "ver": "c", 76 | "ct": "Cavalry", 77 | "uu": "Tarkan", 78 | "ut": "Atheism", 79 | "tb": "Stables are 20% faster.", 80 | "bs": "", 81 | "tt": "" 82 | }, 83 | { 84 | "name": "Japanese", 85 | "ver": "k", 86 | "ct": "Infantry", 87 | "uu": "Samurai", 88 | "ut": "Kataparuto", 89 | "tb": "Galleys have +50% line of sight", 90 | "bs": "", 91 | "tt": "" 92 | }, 93 | { 94 | "name": "Koreans", 95 | "ver": "c", 96 | "ct": "Tower and naval", 97 | "uu": "War Wagon, Turtle Ship", 98 | "ut": "Shinkichon", 99 | "tb": "Mangonel line has +1 range", 100 | "bs": "", 101 | "tt": "" 102 | }, 103 | { 104 | "name": "Mayans", 105 | "ver": "c", 106 | "ct": "Archer", 107 | "uu": "Plumed Archer", 108 | "ut": "El Dorado", 109 | "tb": "Walls are 50% cheaper", 110 | "bs": "", 111 | "tt": "" 112 | }, 113 | { 114 | "name": "Mongols", 115 | "ver": "k", 116 | "ct": "Cavalry Archer", 117 | "uu": "Mangudai", 118 | "ut": "Drill", 119 | "tb": "Scout line has +2 LOS", 120 | "bs": "", 121 | "tt": "" 122 | }, 123 | { 124 | "name": "Persians", 125 | "ver": "k", 126 | "ct": "Cavalry", 127 | "uu": "War Elephant", 128 | "ut": "Mahouts", 129 | "tb": "Knights have +2 attack versus Archers", 130 | "bs": "", 131 | "tt": "" 132 | }, 133 | { 134 | "name": "Saracens", 135 | "ver": "k", 136 | "ct": "Camel and naval", 137 | "uu": "Mameluke", 138 | "ut": "Zealotry", 139 | "tb": "Foot archers have +2 attack bonus against buildings", 140 | "bs": "", 141 | "tt": "" 142 | }, 143 | { 144 | "name": "Spanish", 145 | "ver": "c", 146 | "ct": "Gunpowder and Monk", 147 | "uu": "Conquistador, Missionary", 148 | "ut": "Supremacy", 149 | "tb": "Trade units generate +33% Gold", 150 | "bs": "", 151 | "tt": "" 152 | }, 153 | { 154 | "name": "Teutons", 155 | "ver": "k", 156 | "ct": "Infantry", 157 | "uu": "Teutonic Knight", 158 | "ut": "Crenellations", 159 | "tb": "Units are more resistant to conversion", 160 | "bs": "", 161 | "tt": "" 162 | }, 163 | { 164 | "name": "Turks", 165 | "ver": "k", 166 | "ct": "Gunpowder", 167 | "uu": "Janissary", 168 | "ut": "Artillery", 169 | "bs": "", 170 | "tb": "Gunpowder units are created 20% faster", 171 | "tt": "" 172 | }, 173 | { 174 | "name": "Vikings", 175 | "ver": "k", 176 | "ct": "Infantry and naval", 177 | "uu": "Berserk, Longboat", 178 | "ut": "Berserkergang", 179 | "tb": "Docks are 25% cheaper", 180 | "bs": "", 181 | "tt": "" 182 | } 183 | ] 184 | } -------------------------------------------------------------------------------- /src/stats/aoc_gathering.js: -------------------------------------------------------------------------------- 1 | const {isMain} = require('./util') 2 | const contents = require('./aoc_gathering.json') 3 | 4 | if (require.main === module || isMain()) { 5 | console.log(JSON.stringify(contents)) 6 | } 7 | 8 | module.exports = contents 9 | -------------------------------------------------------------------------------- /src/stats/aoc_gathering.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "type": "Food", 5 | "source": "Foraging", 6 | "speed": "0.310 F/s", 7 | "note": "Forage bushes are usually used at the game as second or third food option, before farms. Very often a Mill is build close to it, fastening the gathering. However, bushes are very vulnerable to overcrowding, decreasing the productivity." 8 | }, 9 | { 10 | "type": "Food", 11 | "source": "Sheep/Turkey/Cow", 12 | "speed": "0.330 F/s", 13 | "note": "Sheeps (or turkeys if you're playing on a mesoamerican map) have a interesting attribute: they can be positioned underneath the Town Center, nullifying the walk time. Usually only two sheeps are placed in the Town Center per time (yes, this requires some micromanagement and experience). Probably, the only downside is that you have to search for them." 14 | }, 15 | { 16 | "type": "Food", 17 | "source": "Sheep/Turkey/Cow with Britons", 18 | "speed": "0.408 F/s", 19 | "note": "Sheep are specially important for Britons. Finding about 12-14 sheep on land nomad can be enough for them to very quickly reach the Castle Age." 20 | }, 21 | { 22 | "type": "Food", 23 | "source": "Farming", 24 | "speed": "0.33 - 0.41 F/s", 25 | "note": "0.33 F/s without upgrades, 0.38 F/s with Wheelbarrow+Heavy Plow, 0.41 F/s after Hand Cart (Tests). The real farming speed also depends on the walking distance and villager speed and carrying capacity (wheelbarrow and handcart). They require wood and a mill. Also, farms can be upgraded with the Horse Collar, Heavy Plow and Crop Rotation, to increase a maximum amount of food. A player needs to have caution when placing them to have the optimal results!" 26 | }, 27 | { 28 | "type": "Food", 29 | "source": "Farming with Mayans", 30 | "speed": "0.32 - 0.39 F/s", 31 | "note": "0.32 F/s without upgrades, 0.35 F/s with Wheelbarrow+Heavy Plow, 0.39 F/s after Hand Cart (Tests).
\"Mayan farmers effectively work 15% slower, however, because a lot of the farming is actually 'running around on the farm', the real effect is roughly 5% slower.\"(cysion)" 32 | }, 33 | { 34 | "type": "Food", 35 | "source": "Farming with Aztecs", 36 | "speed": "0.38 - 0.42 F/s", 37 | "note": "0.38 F/s without upgrades, 0.40 F/s with Wheelbarrow+Heavy Plow, 0.42 F/s after Hand Cart (Tests). This speed improvement is due to the +5 carrying capacity." 38 | }, 39 | { 40 | "type": "Food", 41 | "source": "Boars", 42 | "speed": "0.41 F/s", 43 | "note": "These animals fight back when attacked, althought they rush the villagers who shot at them blindly. This way they can be lured to the Town Center to nullify the walking time, pretty much like sheeps, except that you cannot actively control them. Most random maps have 2 of them close to your city, which are very useful. In some cases, it might be necessary to research Loom before luring to avoid the villager dying to the boar." 44 | }, 45 | { 46 | "type": "Food", 47 | "source": "Boars with Mongols", 48 | "speed": "0.610 F/s", 49 | "note": "" 50 | }, 51 | { 52 | "type": "Food", 53 | "source": "Deer", 54 | "speed": "0.41 F/s", 55 | "note": "Deer, unlike Boars, flee when attacked, or when a unit comes near them. Because of this attribute, it's quite difficult to lure them closer to the Town Center, althought a Scout can do the trick. But, usually, players build a Mill close to the pocket. There are usually 2 pockets of Deer per player in a random game" 56 | }, 57 | { 58 | "type": "Food", 59 | "source": "Deer with Mongols", 60 | "speed": "0.610 F/s", 61 | "note": "" 62 | }, 63 | { 64 | "type": "Food", 65 | "source": "Fishing with villagers", 66 | "speed": "0.43 F/s", 67 | "note": "The type of fish (deep or shore) makes no difference in speed. Fishing shore fish with villagers is faster than with Fishing Ships, but has the obvious disadvantage of only being able to fish near the shore. Also, before the researching of wheelbarrow they can't carry more than 10, whilst ships can carry 15 units. Also, they usually require a mill nearby, because the Town Center is usually far away." 68 | }, 69 | { 70 | "type": "Food", 71 | "source": "Fishing deep fish", 72 | "speed": "0.49 F/s", 73 | "note": "Ship fishing is a good alternate in maps that has lakes and seas. Sea economy expand very quickly, when compared to villager based economies. They can expand even in Dark Age, whilst villager economies show great expansion only from the Castle Age onwards." 74 | }, 75 | { 76 | "type": "Food", 77 | "source": "Fishing deep fish with japanese", 78 | "speed": "0.511 - 0.584 F/s", 79 | "note": "Japanese have a bonus to their fishing ship fishing speeds 5% in Dark, 10% in Feudal, 15% in Castle and 20% in Imperial. These correspond to 0.511 F/s in Dark age, 0.536 F/s in Feudal Age, 0.559 F/s in Castle age and 0.585 F/s in Imperial Age (Tests). Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance." 80 | }, 81 | { 82 | "type": "Food", 83 | "source": "Fishing shore fish", 84 | "speed": "0.280 F/s", 85 | "note": "Fishing shore fish with fishing ships should be avoided and only using it if deep fish is very far (Tests)." 86 | }, 87 | { 88 | "type": "Food", 89 | "source": "Fishing shore fish with japanese", 90 | "speed": "0.294 - 0.336 F/s", 91 | "note": "Japanese have a bonus to their fishing ship fishing speeds 5% in Dark, 10% in Feudal, 15% in Castle and 20% in Imperial. These correspond to 0.294 F/s in Dark age, 0.308 F/s in Feudal Age, 0.322 F/s in Castle age and 0.336 F/s in Imperial Age. Note these values hold only when the fishing ship doesn't have to move to drop off resources. Real values will be lower based on the distance." 92 | }, 93 | { 94 | "type": "Food", 95 | "source": "Fish traps with japanese", 96 | "speed": "0.375 - 0.407 F/s", 97 | "note": "Usually used fish has run out. Gives quite good wood to food ratio. Japanese get faster fishing ship by 5% in each age. Experimental results - 0.375 F/s in Feudal, 0.391 F/s in Castle and 0.407 F/s in Imperial age (Tests)." 98 | }, 99 | { 100 | "type": "Food", 101 | "source": "Fish traps", 102 | "speed": "0.342 F/s", 103 | "note": "Usually used once fish has run out. Gives quite good wood to food ratio. In realistic tests 0.342 F/s (when directly adjacent to the dock)." 104 | }, 105 | { 106 | "type": "Wood", 107 | "source": "Chopping", 108 | "speed": "0.388 - 0.615 W/s", 109 | "note": "0.466 W/s after Double-Bit Axe (x1.2), 0.559 W/s after Bow Saw (x1.2) and 0.615 W/s after Two-Man Saw (x1.1). Wood is harvested from trees. Obviously, not every forest is close to a Town Center, so a Lumber Mill (or another Town Center) is an almost obligatory requisite for an efficient wood gathering." 110 | }, 111 | { 112 | "type": "Wood", 113 | "source": "Chopping with Celts", 114 | "speed": "0.444 - 0.643 W/s", 115 | "note": "Celtic lumberjacks start with a 15% bonus efficiency. 0.535 W/s after Double-Bit Axe (x1.2) and 0.643 W/s after Bow Saw (x1.2)" 116 | }, 117 | { 118 | "type": "Gold", 119 | "source": "Mining", 120 | "speed": "0.379 - 0.501 G/s", 121 | "note": "0.436 G/s after Gold mining (x1.15) and 0.501 G/s after Gold Shaft Mining (x1.15). Gold is possibly the most important resource in the game, because without gold, only three military units types are available (Spear line, Skirmisher line and Scout line, which are cheerfully called as 'trash'). Gold mining is the primary gold source; and the initial mine clump, has seven mines. Relics can be found in the map, and each grant a permanent trickle of gold." 122 | }, 123 | { 124 | "type": "Gold", 125 | "source": "Mining with Turks", 126 | "speed": "0.435 - 0.576 G/s", 127 | "note": "Turks get 15 % gold mining bonus (gold mining work rate x 1.15). 0.501 G/s after Gold mining (x1.15) and 0.576 G/s after Gold Shaft Mining (x1.15)." 128 | }, 129 | { 130 | "type": "Gold", 131 | "source": "Relic", 132 | "speed": "0.5 G/s", 133 | "note": "Relics generate 1 gold every 2 seconds" 134 | }, 135 | { 136 | "type": "Gold", 137 | "source": "Relic with Aztecs", 138 | "speed": "0.67 G/s", 139 | "note": "Aztecs get a 33% gold generation bonus." 140 | }, 141 | { 142 | "type": "Stone", 143 | "source": "Mining", 144 | "speed": "0.359 - 0.475 S/s", 145 | "note": "0.413 S/s after Stone mining (x1.15) and 0.475 S/s after Stone Shaft Mining (x1.15). Stone can only be harvested from stone mines. Stone isn't used for units, but some technologies require it. It's greatest use is obviously for creating buildings. Town Centers, Outposts, Castles, Towers, Walls, Gates and Wonders all require large amounts of stone." 146 | }, 147 | { 148 | "type": "Stone", 149 | "source": "Mining with Koreans", 150 | "speed": "0.431 - 0.570 S/s", 151 | "note": "Korean stone miners get a 20% work rate bonus (1.2 x work rate). 0.495 S/s after Stone mining (x1.15) and 0.570 S/s after Stone Shaft Mining (x1.15)." 152 | } 153 | ] 154 | } -------------------------------------------------------------------------------- /src/stats/aoc_matrix.csv: -------------------------------------------------------------------------------- 1 | ,Aztecs,Britons,Byzantines,Celts,Chinese,Franks,Goths,Huns,Japanese,Koreans,Mayans,Mongols,Persians,Saracens,Spanish,Teutons,Turks,Vikings 2 | Archer,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 3 | Arbalest,1,1,1,0,1,0,0,0,1,1,1,1,0,1,0,0,0,1 4 | Architecture,0,1,0,0,1,1,1,0,0,1,1,0,1,0,1,0,1,1 5 | Atonement,1,0,1,0,1,0,0,1,1,0,1,1,0,1,1,1,1,1 6 | Ballistics,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 7 | Banking,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 8 | Battering Ram,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 9 | Blast Furnace,1,1,0,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1 10 | Block Printing,1,1,1,0,0,1,0,0,1,1,1,0,1,1,1,1,0,1 11 | Bloodlines,0,0,0,0,1,0,1,1,0,0,0,1,1,1,1,1,1,0 12 | Bodkin Arrow,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 13 | Bombard Cannon,0,0,1,0,0,1,1,0,0,1,0,0,1,1,1,1,1,0 14 | Bombard Tower,0,0,1,0,1,0,0,0,0,1,0,0,0,0,1,1,1,0 15 | Bow Saw,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 16 | Bracer,1,1,1,0,1,0,1,1,1,1,1,1,0,1,1,0,1,1 17 | Camel,0,0,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0 18 | Cannon Galleon,0,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 19 | Capped Ram,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 20 | Caravan,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 21 | Careening,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 22 | Cartography,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 23 | Cavalier,0,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1 24 | Cavalry Archer,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 25 | Chain Barding Armor,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 26 | Chain Mail Armor,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 27 | Champion,1,1,1,1,1,1,1,0,1,1,0,1,0,1,1,1,1,1 28 | Chemistry,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 29 | Coinage,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 30 | Conscription,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 31 | Crossbowman,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1 32 | Crop Rotation,1,0,1,0,0,1,1,0,0,0,1,0,1,0,0,1,0,1 33 | Demolition Ship,0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1 34 | Double-Bit Axe,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 35 | Dry Dock,1,1,1,1,1,1,0,1,1,1,1,0,1,1,1,0,1,1 36 | Eagle Warrior,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 37 | Elite Eagle Warrior,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 38 | Elite Cannon Galleon,0,0,1,0,0,0,0,0,1,0,0,1,1,1,1,0,1,1 39 | Elite Longboat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 40 | Elite Skirmisher,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1 41 | Elite Turtle Ship,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 42 | Fast Fire Ship,1,1,1,0,0,1,1,0,1,1,1,1,1,0,1,1,0,0 43 | Faith,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 44 | Fervor,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 45 | Fire Ship,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0 46 | Fishing Ship,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 47 | Fletching,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 48 | Forging,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 49 | Fortified Wall,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1 50 | Galley,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 51 | Galleon,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 52 | Gold Mining,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 53 | Gold Shaft Mining,1,1,1,1,1,1,0,1,0,1,0,1,1,1,0,0,1,1 54 | Guard Tower,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1 55 | Guilds,0,1,1,1,0,0,1,1,0,1,1,0,1,0,0,1,1,0 56 | Halberdier,0,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,0,0 57 | Hand Cannoneer,0,0,1,0,0,1,1,0,1,1,0,0,1,1,1,1,1,0 58 | Heated Shot,1,1,0,1,1,0,1,0,0,1,1,0,1,0,0,1,1,1 59 | Heavy Camel,0,0,1,0,1,0,0,0,0,0,0,1,1,1,0,0,1,0 60 | Heavy Cavalry Archer,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,0 61 | Heavy Demolition Ship,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1 62 | Heavy Plow,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 63 | Heavy Scorpion,0,0,0,1,1,1,1,0,1,0,1,1,1,0,0,1,1,1 64 | Herbal Medicine,1,1,0,1,1,1,1,0,1,1,1,1,1,1,1,0,0,0 65 | Heresy,1,0,1,1,0,1,0,1,0,0,1,1,0,1,1,1,1,1 66 | Hoardings,0,1,1,1,0,1,0,0,0,0,1,1,1,1,1,1,1,1 67 | Horse collar,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 68 | Husbandry,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,0 69 | Hussar,0,0,1,1,0,0,1,1,0,1,0,1,1,1,1,0,1,0 70 | Illumination,1,1,1,0,1,1,1,1,1,0,0,0,0,1,1,1,0,0 71 | Iron Casting,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 72 | Keep,0,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,1,0 73 | King,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 74 | Knight,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 75 | Leather Archer Armor,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 76 | Light Cavalry,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,0,1,1 77 | Long Swordsman,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 78 | Longboat,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 79 | Man-at-arms,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 80 | Mangonel,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 81 | Masonry,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 82 | Militia,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 83 | Missionary,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 84 | Monk,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 85 | Murder Holes,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 86 | Onager,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,0,1 87 | Parthian Tactics,0,0,0,0,0,0,0,1,1,0,0,1,1,1,0,0,1,0 88 | Paladin,0,0,1,1,0,1,0,1,0,0,0,0,1,0,1,1,0,0 89 | Petard,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 90 | Pikeman,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1 91 | Padded Archer Armor,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 92 | Plate Barding Armor,0,1,1,0,1,1,0,1,0,0,0,0,1,1,1,1,1,0 93 | Plate Mail Armor,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1 94 | Redemption,1,0,1,0,1,0,0,0,1,0,0,0,0,1,1,1,1,0 95 | Ring Archer Armor,0,1,1,0,1,0,1,0,1,1,1,0,1,1,1,1,1,1 96 | Sanctity,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0 97 | Sappers,1,1,0,1,1,0,1,1,0,0,1,1,1,0,1,1,1,1 98 | Scorpion,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 99 | Scale Mail Armor,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 100 | Scale Barding Armor,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 101 | Scout Cavalry,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 102 | Shipwright,1,1,1,1,1,0,1,0,1,1,1,1,0,0,1,0,1,0 103 | Siege Engineers,1,1,0,1,0,1,0,0,1,1,0,1,0,1,0,1,0,1 104 | Siege Onager,1,0,0,1,0,0,0,0,0,1,0,1,0,1,0,1,0,0 105 | Siege Ram,1,0,1,1,1,0,0,1,0,0,1,1,1,1,1,0,1,1 106 | Skirmisher,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 107 | Spearman,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 108 | Spies,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 109 | Squires,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1 110 | Stable,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 111 | Stone Mining,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 112 | Stone Shaft Mining,1,0,1,1,1,0,1,0,0,1,1,1,1,0,1,1,0,0 113 | Stone Wall,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1 114 | Theocracy,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,1,1,0 115 | Thumb Ring,0,0,1,0,1,0,0,0,1,1,1,1,1,1,1,0,1,1 116 | Tracking,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 117 | Trade Cart,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 118 | Trade Cog,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 119 | Transport Ship,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 120 | Treadmill Crane,1,0,0,1,0,1,1,1,0,1,1,0,0,1,0,1,1,0 121 | Treason,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 122 | Trebuchet (packed),1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 123 | Turtle Ship,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 124 | Two-handed Swordsman,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1 125 | Two-Man Saw,0,1,1,0,1,0,1,1,1,1,1,0,1,1,1,1,1,1 126 | Villager,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 127 | War Galley,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 128 | Berserk,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 129 | Elite Berserk,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 130 | Cataphract,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 131 | Elite Cataphract,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 132 | Chu Ko Nu,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 133 | Elite Chu Ko Nu,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 134 | Conquistador,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 135 | Elite Conquistador,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 136 | Huskarl,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 137 | Elite Huskarl,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 138 | Jaguar Warrior,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 139 | Elite Jaguar Warrior,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 140 | Janissary,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 141 | Elite Janissary,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 142 | Longbowman,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 143 | Elite Longbowman,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 144 | Mameluke,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 145 | Elite Mameluke,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 146 | Mangudai,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 147 | Elite Mangudai,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 148 | Plumed Archer,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 149 | Elite Plumed Archer,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 150 | Samurai,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 151 | Elite Samurai,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 152 | Tarkan,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 153 | Elite Tarkan,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 154 | Teutonic Knight,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 155 | Elite Teutonic Knight,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 156 | Throwing Axeman,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 157 | Elite Throwing Axeman,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 158 | War Elephant,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 159 | Elite War Elephant,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 160 | War Wagon,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 161 | Elite War Wagon,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 162 | Woad Raider,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 163 | Elite Woad Raider,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 164 | Archery Range,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 165 | Barracks,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 166 | Blacksmith,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 167 | Stable,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1 168 | Castle,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 169 | Dock,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 170 | Farm,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 171 | House,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1 172 | Lumber Camp,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 173 | Market,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 174 | Mill,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 175 | Mining Camp,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 176 | Monastery,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 177 | Siege Workshop,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 178 | Town Center,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 179 | University,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 180 | Wonder,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 181 | Gate,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 182 | Outpost,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 183 | Palisade Wall,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 184 | Watch Tower,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 185 | Feudal Age,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 186 | Loom,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 187 | Castle Age,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 188 | Town Watch,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 189 | Wheelbarrow,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 190 | Hand Cart,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 191 | Imperial Age,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 192 | Town Patrol,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 193 | Anarchy,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 194 | Artillery,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0 195 | Atheism,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0 196 | Bearded Axe,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0 197 | Berserkergang,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 198 | Crenellations,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0 199 | Drill,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0 200 | El Dorado,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0 201 | Furor Celtica,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 202 | Garland Wars,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 203 | Kataparuto,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0 204 | Logistica,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 205 | Mahouts,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0 206 | Perfusion,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 207 | Rocketry,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0 208 | Shinkichon,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0 209 | Supremacy,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0 210 | Yeomen,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 211 | Zealotry,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0 212 | -------------------------------------------------------------------------------- /src/stats/aoc_structures.js: -------------------------------------------------------------------------------- 1 | const util = require('./util') 2 | const contents = require('./aoc_structures.json') 3 | 4 | util.extendWithAvailability(contents, './aoc_matrix.csv') 5 | 6 | if (require.main === module || util.isMain()) { 7 | console.log(JSON.stringify(contents)) 8 | } 9 | 10 | module.exports = contents 11 | -------------------------------------------------------------------------------- /src/stats/aoc_technologies.js: -------------------------------------------------------------------------------- 1 | const util = require('./util') 2 | 3 | const data = require('./aoc_technologies.json') 4 | util.extendWithAvailability(data, './aoc_matrix.csv') 5 | 6 | if (require.main === module || util.isMain()) { 7 | console.log(JSON.stringify(data)) 8 | } 9 | 10 | module.exports = data 11 | -------------------------------------------------------------------------------- /src/stats/aoc_units.js: -------------------------------------------------------------------------------- 1 | const util = require('./util') 2 | 3 | const data = require('./aoc_units.json') 4 | util.extendWithAvailability(data, './aoc_matrix.csv') 5 | 6 | if (require.main === module || util.isMain()) { 7 | console.log(JSON.stringify(data)) 8 | } 9 | 10 | module.exports = data 11 | -------------------------------------------------------------------------------- /src/stats/de_civilizations.js: -------------------------------------------------------------------------------- 1 | const util = require('./util') 2 | const isMain = util.isMain() 3 | const diff = require('./de_civilizations_diff.json') 4 | 5 | const base = require('./dlc_civilizations') 6 | const data = util.extendData(base, diff) 7 | 8 | if (require.main === module || isMain) { 9 | console.log(JSON.stringify(data)) 10 | } 11 | 12 | module.exports = data 13 | -------------------------------------------------------------------------------- /src/stats/de_civilizations_diff.json: -------------------------------------------------------------------------------- 1 | { 2 | "changes": {}, 3 | "additional": [ 4 | { 5 | "name": "Bulgarians", 6 | "ver": "d", 7 | "ct": "Infantry and Cavalry", 8 | "uu": "Konnik", 9 | "ut": "Stirrups(Castle),
Bagains(Imperial)", 10 | "tb": "Blacksmiths work 50% faster", 11 | "bs": "