index.html 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722
  1. <!DOCTYPE html>
  2. <html dir="ltr" lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>Oddjobs | Gish AP Calculator</title>
  6. <meta name="description" content="The guild for MapleStory odd-jobbers" />
  7. <meta name="viewport" content="width=device-width,initial-scale=1" />
  8. <link rel="stylesheet" type="text/css" href="../css/style.css" />
  9. <link rel="icon" type="image/png" href="../img/favicon.png" />
  10. <script type="module" async src="./main.js"></script>
  11. </head>
  12. <body>
  13. <div id="nav-content-wrapper">
  14. <nav id="main-nav">
  15. <div id="main-nav-inner">
  16. <div id="main-nav-pullout"><span>&#x25b6;</span></div>
  17. <a href="../" class="nav-h"
  18. >Oddjobs
  19. <br />
  20. <img
  21. src="../img/logo.svg"
  22. alt="Oddjobs logo | Due to Evan MacDonald of the Noun Project (CC BY 3.0)"
  23. title="Oddjobs logo | Due to Evan MacDonald of the Noun Project (CC BY 3.0)"
  24. /></a>
  25. <ul class="nav-list">
  26. <li>
  27. <a href="../">Home</a>
  28. </li>
  29. <li>
  30. <a href="../join-on-up.html">Join On Up</a>
  31. </li>
  32. <li>
  33. <a
  34. target="_blank"
  35. rel="noopener noreferrer"
  36. href="https://oddjobs.flarum.cloud/"
  37. >Forum</a
  38. >
  39. </li>
  40. <li>
  41. <a href="../odd-jobs.html">Odd Jobs</a>
  42. </li>
  43. <li>
  44. <a href="../guides/">Guides</a>
  45. </li>
  46. <li>
  47. <a href="../dmg-calc/">Damage Calc</a>
  48. </li>
  49. <li class="active">
  50. <a href="./">Gish AP Calc</a>
  51. </li>
  52. <li>
  53. <a href="../archive/">Archive</a>
  54. </li>
  55. <li>
  56. <a href="../rankings/">Rankings</a>
  57. </li>
  58. <li>
  59. <a href="../source.html" data-jslicense="1">Source</a>
  60. </li>
  61. </ul>
  62. </div>
  63. </nav>
  64. <div id="content">
  65. <header>
  66. <h1>Gish AP Calculator</h1>
  67. <span class="subtitle"
  68. >Gishes are very difficult. But this calculator can help!</span
  69. >
  70. <noscript>
  71. <div id="noscript">
  72. <p>
  73. It looks like you have JavaScript disabled or blocked. If your
  74. browser supports JavaScript, you need not worry about enabling
  75. it for this page, as the JavaScript on this page is entirely
  76. <a
  77. target="_blank"
  78. rel="noopener noreferrer"
  79. href="https://en.wikipedia.org/wiki/Free_software"
  80. >free</a
  81. >
  82. (<a
  83. target="_blank"
  84. rel="noopener noreferrer"
  85. href="https://www.gnu.org/licenses/agpl-3.0"
  86. >GNU AGPL v3</a
  87. >+). See
  88. <a href="../source.html" data-jslicense="1">the Source page</a>
  89. for more information and access to source code.
  90. </p>
  91. </div>
  92. </noscript>
  93. </header>
  94. <main>
  95. <a href="#preamble" class="h-anchor"
  96. ><h2 id="preamble">Preamble</h2></a
  97. >
  98. <p>
  99. This calculator is
  100. <a
  101. target="_blank"
  102. rel="noopener noreferrer"
  103. href="https://en.wikipedia.org/wiki/Software_release_life_cycle#Alpha"
  104. >alpha</a
  105. >-quality (or even
  106. <a
  107. target="_blank"
  108. rel="noopener noreferrer"
  109. href="https://en.wikipedia.org/wiki/Software_release_life_cycle#Pre-alpha"
  110. >pre-alpha</a
  111. >-quality) software; it is highly experimental, but you can still
  112. use it to help assign (and/or reset) your AP as a
  113. <a href="/odd-jobs.html#gish">gish</a>.
  114. </p>
  115. <p>
  116. Speaking of <em>resetting</em> AP, this calculator will not attempt
  117. to use AP resets for you. It can only operate with the &ldquo;AP
  118. available&rdquo; that you give it. That being said, if you are
  119. resetting your AP, you can try setting all your base stats in the
  120. calculator to 4. Then, set your &ldquo;AP available&rdquo; to
  121. whatever it would be at your level with 4/4/4/4 base stats. Once
  122. you get a result from the calculator, you can use whatever AP
  123. resets you have to get as close to the calculator&rsquo;s results
  124. as possible.
  125. </p>
  126. <a href="#calculator" class="h-anchor"
  127. ><h2 id="calculator">Calculator</h2></a
  128. >
  129. <div id="calculator-input">
  130. <fieldset id="stats">
  131. <legend>Stats</legend>
  132. <fieldset id="base-stats">
  133. <legend>Base stats</legend>
  134. <label for="str-base">
  135. <abbr
  136. class="help"
  137. title="Base STR; only counting STR from character creation + AP spent on STR."
  138. >Base STR</abbr
  139. >
  140. <input
  141. type="number"
  142. id="str-base"
  143. name="str-base"
  144. min="4"
  145. value="4"
  146. />
  147. </label>
  148. <label for="dex-base">
  149. <abbr
  150. class="help"
  151. title="Base DEX; only counting DEX from character creation + AP spent on DEX."
  152. >Base DEX</abbr
  153. >
  154. <input
  155. type="number"
  156. id="dex-base"
  157. name="dex-base"
  158. min="4"
  159. value="4"
  160. />
  161. </label>
  162. <label for="int-base">
  163. <abbr
  164. class="help"
  165. title="Base INT; only counting INT from character creation + AP spent on INT."
  166. >Base INT</abbr
  167. >
  168. <input
  169. type="number"
  170. id="int-base"
  171. name="int-base"
  172. min="4"
  173. value="4"
  174. />
  175. </label>
  176. <label for="luk-base">
  177. <abbr
  178. class="help"
  179. title="Base LUK; only counting LUK from character creation + AP spent on LUK."
  180. >Base LUK</abbr
  181. >
  182. <input
  183. type="number"
  184. id="luk-base"
  185. name="luk-base"
  186. min="4"
  187. value="4"
  188. />
  189. </label>
  190. </fieldset>
  191. <fieldset id="additional-stats">
  192. <legend>Additional stats</legend>
  193. <label for="str-additional">
  194. <abbr class="help" title="STR from equipment."
  195. >Additional STR</abbr
  196. >
  197. +<input
  198. type="number"
  199. id="str-additional"
  200. name="str-additional"
  201. min="0"
  202. value="0"
  203. />
  204. </label>
  205. <label for="dex-additional">
  206. <abbr class="help" title="DEX from equipment."
  207. >Additional DEX</abbr
  208. >
  209. +<input
  210. type="number"
  211. id="dex-additional"
  212. name="dex-additional"
  213. min="0"
  214. value="0"
  215. />
  216. </label>
  217. <label for="int-additional">
  218. <abbr class="help" title="INT from equipment."
  219. >Additional INT</abbr
  220. >
  221. +<input
  222. type="number"
  223. id="int-additional"
  224. name="int-additional"
  225. min="0"
  226. value="0"
  227. />
  228. </label>
  229. <label for="luk-additional">
  230. <abbr class="help" title="LUK from equipment."
  231. >Additional LUK</abbr
  232. >
  233. +<input
  234. type="number"
  235. id="luk-additional"
  236. name="luk-additional"
  237. min="0"
  238. value="0"
  239. />
  240. </label>
  241. <label for="wacc-additional">
  242. <abbr
  243. class="help"
  244. title="Raw (not from DEX nor LUK) WACC from equipment + buffs."
  245. >Additional raw WACC</abbr
  246. >
  247. +<input
  248. type="number"
  249. id="wacc-additional"
  250. name="wacc-additional"
  251. min="0"
  252. value="0"
  253. />
  254. </label>
  255. <label for="matk-additional">
  256. <abbr
  257. class="help"
  258. title="Raw (not from INT) MATK from equipment + buffs."
  259. >Additional raw MATK</abbr
  260. >
  261. +<input
  262. type="number"
  263. id="matk-additional"
  264. name="matk-additional"
  265. min="0"
  266. value="0"
  267. />
  268. </label>
  269. </fieldset>
  270. <label for="total-watk">
  271. <abbr
  272. class="help"
  273. title="Total weapon attack; the sum of WATK from equipment, WATK buffs, and ammunition."
  274. >Total WATK</abbr
  275. >
  276. <input
  277. type="number"
  278. id="total-watk"
  279. name="total-watk"
  280. min="0"
  281. value="1"
  282. />
  283. </label>
  284. </fieldset>
  285. <label for="ap-available">
  286. <abbr
  287. class="help"
  288. title="How many AP (ability points) you can spend."
  289. >AP available</abbr
  290. >
  291. <input
  292. type="number"
  293. id="ap-available"
  294. name="ap-available"
  295. min="1"
  296. value="1"
  297. />
  298. </label>
  299. <fieldset>
  300. <legend>Character</legend>
  301. <label for="level">
  302. <abbr class="help" title="Your player character&rsquo;s level."
  303. >Level</abbr
  304. >
  305. <input
  306. type="number"
  307. id="level"
  308. name="level"
  309. min="8"
  310. max="200"
  311. value="30"
  312. />
  313. </label>
  314. </fieldset>
  315. <fieldset id="weapon">
  316. <legend>Weapon/spell</legend>
  317. <label for="weapon-type">
  318. <abbr
  319. class="help"
  320. title="The type of weapon that you have equipped."
  321. >Type</abbr
  322. >
  323. <select name="weapon-type" id="weapon-type">
  324. <optgroup label="Warrior&rsquo;s">
  325. <option value="30" selected>One-handed sword</option>
  326. <option value="40">Two-handed sword</option>
  327. <option value="31">One-handed axe</option>
  328. <option value="41">Two-handed axe</option>
  329. <option value="32">One-handed blunt weapon</option>
  330. <option value="42">Two-handed blunt weapon</option>
  331. <option value="43">Spear</option>
  332. <option value="44">Polearm</option>
  333. </optgroup>
  334. <optgroup label="Magician&rsquo;s">
  335. <option value="37">Wand</option>
  336. <option value="38">Staff</option>
  337. </optgroup>
  338. <optgroup label="Rogue&rsquo;s">
  339. <option value="33">Dagger</option>
  340. </optgroup>
  341. </select>
  342. </label>
  343. <label for="speed">
  344. <abbr
  345. class="help"
  346. title="The speed category of your weapon, after being adjusted by buffs. This value can never be lower than 2, so lower values are clamped to just 2. It is often (but not always) necessary to use out-of-game information to get the speed category of your weapon, because the game uses ambiguous names like &ldquo;Fast&rdquo;. Ordinary Booster skills reduce your speed category by 2. Spell Booster has a similar effect (reducing by 1 category at earlier levels of Spell Booster, and 2 at later levels), although it only works with wands and staves. Speed Infusion reduces by 4 categories (or, again depending on implementation, it may instead stack with other Booster skills and reduce by just 2)."
  347. >Speed</abbr
  348. >
  349. <select name="speed" id="speed">
  350. <option value="2">2 (Faster)</option>
  351. <option value="3">3 (Faster)</option>
  352. <option value="4">4 (Fast)</option>
  353. <option value="5">5 (Fast)</option>
  354. <option value="6" selected>6 (Normal)</option>
  355. <option value="7">7 (Slow)</option>
  356. <option value="8">8 (Slow)</option>
  357. <option value="9">9 (Slower)</option>
  358. </select>
  359. </label>
  360. <label for="spell">
  361. <abbr
  362. class="help"
  363. title="The spell that you are casting. If you don&rsquo;t see the spell that you are casting listed here, just leave it at the default &ldquo;[other]&rdquo;."
  364. >Spell</abbr
  365. >
  366. <select name="spell" id="spell">
  367. <option value="0">[other]</option>
  368. <optgroup label="F/P Mage">
  369. <option value="2111002">Explosion</option>
  370. <option value="2111003">Poison Mist</option>
  371. <option value="2111006">Element Composition</option>
  372. </optgroup>
  373. <optgroup label="F/P Archmage">
  374. <option value="2121005">Elquines</option>
  375. <option value="2121007">Meteor Shower</option>
  376. </optgroup>
  377. <optgroup label="I/L Mage">
  378. <option value="2211002">Ice Strike</option>
  379. <option value="2211003">Thunder Spear</option>
  380. <option value="2211006">Element Composition</option>
  381. </optgroup>
  382. <optgroup label="I/L Archmage">
  383. <option value="2221005">Ifrit</option>
  384. <option value="2221006">Chain Lightning</option>
  385. <option value="2221007">Blizzard</option>
  386. </optgroup>
  387. <optgroup label="Cleric">
  388. <option value="2301002">Heal</option>
  389. <option value="2301005">Holy Arrow</option>
  390. </optgroup>
  391. <optgroup label="Priest">
  392. <option value="2311004">Shining Ray</option>
  393. <option value="2311006">Summon Dragon</option>
  394. </optgroup>
  395. <optgroup label="Bishop">
  396. <option value="2321003">Bahamut</option>
  397. <option value="2321007">Angel Ray</option>
  398. <option value="2321008">Genesis</option>
  399. </optgroup>
  400. </select>
  401. </label>
  402. <label for="spell-basic-atk">
  403. <abbr
  404. class="help"
  405. title="The basic attack of a spell is listed in the spell&rsquo;s description, for the particular level of the spell that you&rsquo;re using. Heal technically uses a damage percentage, not a basic attack, but here we treat each percentage point as being one point of basic attack."
  406. >Spell basic attack</abbr
  407. >
  408. <input
  409. type="number"
  410. id="spell-basic-atk"
  411. name="spell-basic-atk"
  412. min="1"
  413. value="10"
  414. />
  415. </label>
  416. <label for="spell-lines">
  417. <abbr
  418. class="help"
  419. title="The number of lines (i.e. displayed damage numbers) of damage that your spell deals."
  420. >Spell lines</abbr
  421. >
  422. <input
  423. type="number"
  424. id="spell-lines"
  425. name="spell-lines"
  426. min="1"
  427. value="1"
  428. />
  429. </label>
  430. <label for="mastery">
  431. <abbr
  432. class="help"
  433. title="The mastery of the spell that you are casting. The mastery is given by the description of the spell, at the particular skill level that you&rsquo;re casting the spell at."
  434. >Spell mastery</abbr
  435. >
  436. <input
  437. type="number"
  438. id="mastery"
  439. name="mastery"
  440. min="10"
  441. max="90"
  442. step="5"
  443. value="15"
  444. />%
  445. </label>
  446. <label for="spell-booster">
  447. <abbr
  448. class="help"
  449. title="The amount that your spellcasting speed category is reduced by, due to buffs. This is &minus;1 at earlier levels of Spell Booster (&lt;11), and &minus;2 at later levels. This only applies to magical attacks."
  450. >Spell booster</abbr
  451. >
  452. <input
  453. type="number"
  454. id="spell-booster"
  455. name="spell-booster"
  456. min="-2"
  457. max="0"
  458. value="0"
  459. />
  460. </label>
  461. </fieldset>
  462. <details>
  463. <summary>Elemental</summary>
  464. <fieldset>
  465. <legend>Elemental stuff</legend>
  466. <label for="ele-amp">
  467. <abbr
  468. class="help"
  469. title="The percentage that your magic damage is multiplied by, according to the description of your level of Element Amplification. If you don&rsquo;t have Element Amplification, this is just 100%."
  470. >Element Amplification</abbr
  471. >
  472. <input
  473. type="number"
  474. id="ele-amp"
  475. name="ele-amp"
  476. min="100"
  477. value="100"
  478. />%
  479. </label>
  480. <label for="ele-wep">
  481. <abbr
  482. class="help"
  483. title="How much your current weapon amplifies the element of the spell that you are currently casting. This only applies when using an Elemental Wand or Elemental Staff in conjunction with a spell of the same element, in which case this should be 25%."
  484. >Elemental Wand/Staff</abbr
  485. >
  486. <input
  487. type="number"
  488. id="ele-wep"
  489. name="ele-wep"
  490. min="0"
  491. value="0"
  492. />%
  493. </label>
  494. </fieldset>
  495. </details>
  496. <fieldset>
  497. <legend>Enemy</legend>
  498. <label for="enemy-wdef">
  499. <abbr
  500. class="help"
  501. title="The target monster&rsquo;s WDEF (weapon defence)."
  502. >WDEF</abbr
  503. >
  504. <input
  505. type="number"
  506. id="enemy-wdef"
  507. name="enemy-wdef"
  508. value="0"
  509. />
  510. </label>
  511. <label for="enemy-mdef">
  512. <abbr
  513. class="help"
  514. title="The target monster&rsquo;s MDEF (magic defence)."
  515. >MDEF</abbr
  516. >
  517. <input
  518. type="number"
  519. id="enemy-mdef"
  520. name="enemy-mdef"
  521. value="0"
  522. />
  523. </label>
  524. <label for="enemy-avoid">
  525. <abbr
  526. class="help"
  527. title="The target monster&rsquo;s AVOID (avoidability)."
  528. >AVOID</abbr
  529. >
  530. <input
  531. type="number"
  532. id="enemy-avoid"
  533. name="enemy-avoid"
  534. min="1"
  535. value="1"
  536. />
  537. </label>
  538. <label for="ele-sus">
  539. <abbr
  540. class="help"
  541. title="How susceptible is the target monster to the element that you are currently using. This applies to magical attacks in the obvious ways. For physical attacks, only some physical attacks have elements; for example, Flamethrower is elementally fire, and Blast is elementally holy when used with Holy/Divine Charge."
  542. >Element susceptibility</abbr
  543. >
  544. <select name="ele-sus" id="ele-sus">
  545. <option value="0">Immune</option>
  546. <option value="0.5">Strong</option>
  547. <option value="1" selected>Neutral</option>
  548. <option value="1.5">Weak</option>
  549. </select>
  550. </label>
  551. <label for="enemy-level">
  552. <abbr class="help" title="The level of the target monster."
  553. >Level</abbr
  554. >
  555. <input
  556. type="number"
  557. id="enemy-level"
  558. name="enemy-level"
  559. min="1"
  560. value="1"
  561. />
  562. </label>
  563. <label for="enemy-count">
  564. <abbr
  565. class="help"
  566. title="How many enemy targets there are of this attack. This value can be greater than one, but note that this does not take into account the damage taken by any of said virtual enemies, except for one of them (you can choose exactly which one by modifying &ldquo;Ordinal # of hit&rdquo;). This value is only here for skills like Heal, which change their per-line damage based on the total number of targets. Note that when casting Heal (maximum of 6 targets), the caster counts as a target, thus lowering the maximum number of possible enemy targets from 6 to 5."
  567. >Count</abbr
  568. >
  569. <input
  570. type="number"
  571. id="enemy-count"
  572. name="enemy-count"
  573. min="1"
  574. max="15"
  575. value="1"
  576. />
  577. </label>
  578. </fieldset>
  579. <label for="w-dominance-factor">
  580. <abbr
  581. class="help"
  582. title="Roughly how many times more powerful you want your melee single-target DPS to be than your magical single-target DPS. Because gishes can only hit a single target at a time in melee, they typically focus on melee for single-target DPS, and magic for mobbing; thus, this value is generally larger than 1."
  583. >wDominanceFactor</abbr
  584. >
  585. <input
  586. type="number"
  587. id="w-dominance-factor"
  588. name="w-dominance-factor"
  589. min="1"
  590. step="0.001"
  591. value="2"
  592. />
  593. </label>
  594. </div>
  595. <div id="calculator-output">
  596. <h3>Stats</h3>
  597. <b>STR:</b> <span id="str-output">???</span> (<span
  598. id="str-base-output"
  599. >???</span
  600. >+<span id="str-additional-output">???</span>)
  601. <br />
  602. <b>DEX:</b> <span id="dex-output">???</span> (<span
  603. id="dex-base-output"
  604. >???</span
  605. >+<span id="dex-additional-output">???</span>)
  606. <br />
  607. <b>INT:</b> <span id="int-output">???</span> (<span
  608. id="int-base-output"
  609. >???</span
  610. >+<span id="int-additional-output">???</span>)
  611. <br />
  612. <b>LUK:</b> <span id="luk-output">???</span> (<span
  613. id="luk-base-output"
  614. >???</span
  615. >+<span id="luk-additional-output">???</span>)
  616. <hr />
  617. <h3>Combat</h3>
  618. <b>Single-target DPS (melee, spell):</b>
  619. <span id="melee-dps">???</span>, <span id="spell-dps">???</span>
  620. <br />
  621. <b>Melee hit rate, spell hit rate:</b>
  622. <span id="melee-hit-rate">???</span>%,
  623. <span id="spell-hit-rate">???</span>%
  624. <hr />
  625. <h3>Warnings</h3>
  626. <div id="warnings-div">
  627. <span id="warnings" class="warning"
  628. >[Warnings have not been implemented yet.]</span
  629. >
  630. </div>
  631. </div>
  632. <a href="#legal" class="h-anchor"><h2 id="legal">Legal</h2></a>
  633. <p>
  634. All of the code on this page is entirely
  635. <a
  636. target="_blank"
  637. rel="noopener noreferrer"
  638. href="https://en.wikipedia.org/wiki/Free_software"
  639. >free</a
  640. >
  641. (<a
  642. target="_blank"
  643. rel="noopener noreferrer"
  644. href="https://www.gnu.org/licenses/agpl-3.0"
  645. >GNU AGPL v3</a
  646. >+). See
  647. <a href="../source.html" data-jslicense="1">the Source page</a>
  648. for more information and access to source code.
  649. </p>
  650. </main>
  651. </div>
  652. </div>
  653. </body>
  654. </html>