2138 lines
231 KiB
TypeScript
2138 lines
231 KiB
TypeScript
/**
|
||
* Diablo II Drop Simulator & Exact Probability Calculator (Issue #110).
|
||
*
|
||
* Provides:
|
||
* - Real production Monte Carlo simulation using rollTreasureClass, D2Rng, and ItemRatio.
|
||
* - Non-blocking chunked simulation loop with live progress bar and cancellation.
|
||
* - Exact analytic drop probability table recursively expanding the TC tree.
|
||
* - Player count scaling for NoDrop (computeScaledNoDrop).
|
||
* - Compound probability 1 - (1 - p)^picks for multiple picks.
|
||
* - Reverse lookup search indexing all eligible items to their source TCs.
|
||
*/
|
||
|
||
import { D2Rng } from './game/d2-rng.ts'
|
||
import {
|
||
rollTreasureClass,
|
||
computeEffectivePlayers,
|
||
computeScaledNoDrop,
|
||
type DroppedItemEntry,
|
||
} from './game/treasure-engine.ts'
|
||
import {
|
||
parseTreasureClassTable,
|
||
type TreasureClassTable,
|
||
type TreasureClassNode,
|
||
} from './game/treasure-class.ts'
|
||
import { parseTable } from './game/acts.ts'
|
||
import {
|
||
mergeAutoTreasureClasses,
|
||
autoTcToTreasureClassNode,
|
||
type AutoTcNode,
|
||
} from './game/auto-tc.ts'
|
||
import {
|
||
createItemRatioTable,
|
||
rollItemQuality,
|
||
type ItemRatioTable,
|
||
type ItemRatioRow,
|
||
type ItemQualityTier,
|
||
} from './game/item-ratio.ts'
|
||
|
||
// --- Canonical 1.13c Data Embedded ------------------------------------------
|
||
|
||
export const CANONICAL_TC_EX_TXT: string = "Treasure Class\tgroup\tlevel\tPicks\tUnique\tSet\tRare\tMagic\tNoDrop\tItem1\tProb1\tItem2\tProb2\tItem3\tProb3\tItem4\tProb4\tItem5\tProb5\tItem6\tProb6\tItem7\tProb7\tItem8\tProb8\tItem9\tProb9\tItem10\tProb10\tSumItems\tTotalProb\tDropChance\tTerm\r\nGold\t\t\t1\t\t\t\t\t\tgld\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nJewelry A\t\t\t1\t\t\t\t\t\trin\t8\tamu\t4\tjew\t2\tcm3\t2\tcm2\t2\tcm1\t2\t\t\t\t\t\t\t\t\t\t\t\t0\r\nJewelry B\t\t\t1\t\t\t\t\t\trin\t8\tamu\t4\tjew\t2\tcm3\t2\tcm2\t2\tcm1\t2\t\t\t\t\t\t\t\t\t\t\t\t0\r\nJewelry C\t\t\t1\t\t\t\t\t\trin\t8\tamu\t4\tjew\t2\tcm3\t2\tcm2\t2\tcm1\t2\t\t\t\t\t\t\t\t\t\t\t\t0\r\nChipped Gem\t\t\t1\t\t\t\t\t\tgcv\t3\tgcy\t3\tgcb\t3\tgcg\t3\tgcr\t3\tgcw\t3\tskc\t2\t\t\t\t\t\t\t\t\t\t0\r\nFlawed Gem\t\t\t1\t\t\t\t\t\tgfv\t3\tgfy\t3\tgfb\t3\tgfg\t3\tgfr\t3\tgfw\t3\tskf\t2\t\t\t\t\t\t\t\t\t\t0\r\nNormal Gem\t\t\t1\t\t\t\t\t\tgsv\t3\tgsy\t3\tgsb\t3\tgsg\t3\tgsr\t3\tgsw\t3\tsku\t2\t\t\t\t\t\t\t\t\t\t0\r\nFlawless Gem\t\t\t1\t\t\t\t\t\tgzv\t3\tgly\t3\tglb\t3\tglg\t3\tglr\t3\tglw\t3\tskl\t2\t\t\t\t\t\t\t\t\t\t0\r\nPerfect Gem\t\t\t1\t\t\t\t\t\tgpv\t3\tgpy\t3\tgpb\t3\tgpg\t3\tgpr\t3\tgpw\t3\tskz\t2\t\t\t\t\t\t\t\t\t\t0\r\nAmmo\t\t\t1\t\t\t\t\t\taqv\t1\tcqv\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMisc 0\t\t\t1\t\t\t\t\t\tkey\t3\ttsc\t3\tisc\t3\topl\t2\tgpl\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMisc 1\t\t\t1\t\t\t\t\t\tkey\t3\ttsc\t3\tisc\t3\topm\t2\tgpm\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMisc 2\t\t\t1\t\t\t\t\t\tkey\t3\ttsc\t3\tisc\t3\tops\t2\tgps\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 1\t\t\t1\t\t\t\t\t\thp1\t8\thp2\t3\tmp1\t3\tmp2\t2\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 2\t\t\t1\t\t\t\t\t\thp1\t1\thp2\t4\thp3\t3\tmp2\t2\tmp3\t2\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 3\t\t\t1\t\t\t\t\t\thp2\t1\thp3\t4\thp4\t3\tmp3\t2\tmp4\t2\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 4\t\t\t1\t\t\t\t\t\thp3\t1\thp4\t4\thp5\t3\tmp4\t2\tmp5\t2\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 5\t\t\t1\t\t\t\t\t\thp3\t1\thp4\t4\thp5\t4\tmp5\t4\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHpotion 6\t\t\t1\t\t\t\t\t\thp4\t4\thp5\t6\tmp4\t2\tmp5\t4\trvs\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nPotion 1\t\t\t1\t\t\t\t\t\thp1\t12\thp2\t4\tmp1\t5\tmp2\t4\trvs\t1\tvps\t4\t\t\t\t\t\t\t\t\t\t\t\t0\r\nPotion 2\t\t\t1\t\t\t\t\t\thp1\t4\thp2\t8\thp3\t5\tmp2\t2\tmp3\t5\trvs\t1\tvps\t2\typs\t3\twms\t1\t\t\t\t\t\t0\r\nPotion 3\t\t\t1\t\t\t\t\t\thp2\t6\thp3\t6\thp4\t4\tmp3\t3\tmp4\t3\trvs\t1\tvps\t2\typs\t2\twms\t1\t\t\t\t\t\t0\r\nPotion 4\t\t\t1\t\t\t\t\t\thp3\t6\thp4\t6\thp5\t4\tmp4\t3\tmp5\t3\trvs\t1\tvps\t2\typs\t2\twms\t1\t\t\t\t\t\t0\r\nPotion 5\t\t\t1\t\t\t\t\t\thp3\t4\thp4\t6\thp5\t6\tmp5\t5\trvs\t1\tvps\t2\typs\t2\twms\t1\t\t\t\t\t\t\t\t0\r\nPotion 6\t\t\t1\t\t\t\t\t\thp4\t6\thp5\t8\tmp4\t1\tmp5\t5\trvs\t1\tvps\t2\typs\t2\twms\t1\t\t\t\t\t\t\t\t0\r\nRunes 1\t\t\t1\t\t\t\t\t\tr01\t3\tr02\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 2\t\t\t1\t\t\t\t\t\tr03\t3\tr04\t2\tRunes 1\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 3\t\t\t1\t\t\t\t\t\tr05\t3\tr06\t2\tRunes 2\t5\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 4\t\t\t1\t\t\t\t\t\tr07\t3\tr08\t2\tRunes 3\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 5\t\t\t1\t\t\t\t\t\tr09\t3\tr10\t2\tRunes 4\t12\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 6\t\t\t1\t\t\t\t\t\tr11\t3\tr12\t2\tRunes 5\t22\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 7\t\t\t1\t\t\t\t\t\tr13\t3\tr14\t2\tRunes 6\t45\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 8\t\t\t1\t\t\t\t\t\tr15\t3\tr16\t2\tRunes 7\t90\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 9\t\t\t1\t\t\t\t\t\tr17\t3\tr18\t2\tRunes 8\t180\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 10\t\t\t1\t\t\t\t\t\tr19\t3\tr20\t2\tRunes 9\t360\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 11\t\t\t1\t\t\t\t\t\tr21\t3\tr22\t2\tRunes 10\t720\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 12\t\t\t1\t\t\t\t\t\tr23\t3\tr24\t2\tRunes 11\t1066\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 13\t\t\t1\t\t\t\t\t\tr25\t3\tr26\t2\tRunes 12\t1519\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 14\t\t\t1\t\t\t\t\t\tr27\t3\tr28\t2\tRunes 13\t2170\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 15\t\t\t1\t\t\t\t\t\tr29\t3\tr30\t2\tRunes 14\t2941\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 16\t\t\t1\t\t\t\t\t\tr31\t3\tr32\t2\tRunes 15\t3957\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRunes 17\t\t\t1\t\t\t\t\t\tr33\t1\tRunes 16\t5170\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Junk\t\t\t1\t\t\t\t\t\tPotion 1\t8\tMisc 0\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Junk\t\t\t1\t\t\t\t\t\tAct 1 Junk\t2\tPotion 2\t8\tMisc 0\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Junk\t\t\t1\t\t\t\t\t\tAct 2 Junk\t2\tPotion 3\t8\tMisc 1\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Junk\t\t\t1\t\t\t\t\t\tAct 3 Junk\t2\tPotion 4\t8\tMisc 1\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Junk\t\t\t1\t\t\t\t\t\tAct 4 Junk\t2\tPotion 5\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Junk\t\t\t1\t\t\t\t\t\tAct 5 Junk\t2\tPotion 6\t8\tMisc 2\t4\tAmmo\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Equip A\t1\t0\t1\t\t\t\t\t\tweap3\t7\tarmo3\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Equip B\t1\t5\t1\t\t\t\t\t\tweap3\t3\tarmo3\t3\tweap6\t7\tarmo6\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Equip C\t1\t9\t1\t\t\t\t\t\tweap3\t2\tarmo3\t1\tweap6\t6\tarmo6\t3\tweap9\t14\tarmo9\t7\tweap12\t2\tarmo12\t1\t\t\t\t\t\t\t\t0\r\nAct 2 Equip A\t1\t12\t1\t\t\t\t\t\tweap6\t2\tarmo6\t1\tweap9\t6\tarmo9\t3\tweap12\t14\tarmo12\t7\tweap15\t2\tarmo15\t1\tAct 1 Equip C\t30\t\t\t36\t66\t0.4545\t0\r\nAct 2 Equip B\t1\t15\t1\t\t\t\t\t\tweap9\t2\tarmo9\t1\tweap12\t6\tarmo12\t3\tweap15\t14\tarmo15\t7\tweap18\t2\tarmo18\t1\tAct 2 Equip A\t60\t\t\t36\t96\t0.6250\t0\r\nAct 2 Equip C\t1\t18\t1\t\t\t\t\t\tweap12\t2\tarmo12\t1\tweap15\t6\tarmo15\t3\tweap18\t14\tarmo18\t7\tweap21\t2\tarmo21\t1\tAct 2 Equip B\t80\t\t\t36\t116\t0.6897\t0\r\nAct 3 Equip A\t1\t20\t1\t\t\t\t\t\tweap15\t2\tarmo15\t1\tweap18\t6\tarmo18\t3\tweap21\t14\tarmo21\t7\tweap24\t2\tarmo24\t1\tAct 2 Equip C\t100\t\t\t36\t136\t0.7353\t0\r\nAct 3 Equip B\t1\t22\t1\t\t\t\t\t\tweap18\t2\tarmo18\t1\tweap21\t6\tarmo21\t3\tweap24\t14\tarmo24\t7\tweap27\t2\tarmo27\t1\tAct 3 Equip A\t200\t\t\t36\t236\t0.8475\t0\r\nAct 3 Equip C\t1\t24\t1\t\t\t\t\t\tweap21\t2\tarmo21\t1\tweap24\t6\tarmo24\t3\tweap27\t14\tarmo27\t7\tweap30\t2\tarmo30\t1\tAct 3 Equip B\t340\t\t\t36\t376\t0.9043\t0\r\nAct 4 Equip A\t1\t26\t1\t\t\t\t\t\tweap24\t2\tarmo24\t1\tweap27\t6\tarmo27\t3\tweap30\t14\tarmo30\t4\tweap33\t2\tarmo33\t1\tAct 3 Equip C\t430\t\t\t33\t463\t0.9287\t0\r\nAct 4 Equip B\t1\t29\t1\t\t\t\t\t\tweap27\t2\tarmo27\t1\tweap30\t6\tarmo30\t3\tweap33\t14\tarmo33\t3\tweap36\t2\tarmo36\t1\tAct 4 Equip A\t500\t\t\t32\t532\t0.9398\t0\r\nAct 5 Equip A\t1\t32\t1\t\t\t\t\t\tweap27\t2\tarmo27\t1\tweap30\t6\tarmo30\t3\tweap33\t14\tarmo33\t3\tweap36\t7\tarmo36\t5\tAct 4 Equip B\t629\t\t\t41\t670\t0.9388\t0\r\nAct 5 Equip B\t1\t34\t1\t\t\t\t\t\tweap30\t2\tarmo30\t1\tweap33\t6\tarmo33\t2\tweap36\t14\tarmo36\t7\tweap39\t2\tarmo39\t1\tAct 5 Equip A\t731\t\t\t35\t766\t0.9543\t0\r\nAct 5 Equip C\t1\t36\t1\t\t\t\t\t\tweap30\t2\tarmo30\t1\tweap33\t6\tarmo33\t2\tweap36\t14\tarmo36\t7\tweap39\t2\tarmo39\t1\tAct 5 Equip B\t833\t\t\t35\t868\t0.9597\t0\r\nAct 1 (N) Equip A\t1\t38\t1\t\t\t\t\t\tweap33\t2\tarmo33\t1\tweap36\t6\tarmo36\t3\tweap39\t14\tarmo39\t7\tweap42\t2\tarmo42\t1\tAct 5 Equip C\t935\t\t\t36\t971\t0.9629\t0\r\nAct 1 (N) Equip B\t1\t40\t1\t\t\t\t\t\tweap33\t2\tarmo33\t1\tweap36\t6\tarmo36\t3\tweap39\t14\tarmo39\t7\tweap42\t6\tarmo42\t3\tAct 1 (N) Equip A\t1105\t\t\t42\t1147\t0.9634\t0\r\nAct 1 (N) Equip C\t1\t42\t1\t\t\t\t\t\tweap36\t2\tarmo36\t1\tweap39\t6\tarmo39\t3\tweap42\t14\tarmo42\t7\tweap45\t2\tarmo45\t1\tAct 1 (N) Equip A\t1020\t\t\t36\t1056\t0.9659\t0\r\nAct 2 (N) Equip A\t1\t44\t1\t\t\t\t\t\tweap36\t2\tarmo36\t1\tweap39\t6\tarmo39\t3\tweap42\t14\tarmo42\t7\tweap45\t6\tarmo45\t3\tAct 1 (N) Equip B\t1233\t\t\t42\t1275\t0.9671\t0\r\nAct 2 (N) Equip B\t1\t46\t1\t\t\t\t\t\tweap39\t2\tarmo39\t1\tweap42\t6\tarmo42\t3\tweap45\t14\tarmo45\t7\tweap48\t2\tarmo48\t1\tAct 2 (N) Equip A\t1105\t\t\t36\t1141\t0.9684\t0\r\nAct 2 (N) Equip C\t1\t48\t1\t\t\t\t\t\tweap39\t2\tarmo39\t1\tweap42\t6\tarmo42\t3\tweap45\t14\tarmo45\t7\tweap48\t6\tarmo48\t3\tAct 2 (N) Equip A\t1318\t\t\t42\t1360\t0.9691\t0\r\nAct 3 (N) Equip A\t1\t50\t1\t\t\t\t\t\tweap42\t2\tarmo42\t1\tweap45\t6\tarmo45\t3\tweap48\t14\tarmo48\t7\tweap51\t2\tarmo51\t1\tAct 2 (N) Equip B\t1190\t\t\t36\t1226\t0.9706\t0\r\nAct 3 (N) Equip B\t1\t52\t1\t\t\t\t\t\tweap42\t2\tarmo42\t1\tweap45\t6\tarmo45\t3\tweap48\t14\tarmo48\t7\tweap51\t6\tarmo51\t3\tAct 3 (N) Equip A\t1445\t\t\t42\t1487\t0.9718\t0\r\nAct 3 (N) Equip C\t1\t54\t1\t\t\t\t\t\tweap45\t2\tarmo45\t1\tweap48\t6\tarmo48\t3\tweap51\t14\tarmo51\t7\tweap54\t2\tarmo54\t1\tAct 3 (N) Equip A\t1275\t\t\t36\t1311\t0.9725\t0\r\nAct 4 (N) Equip A\t1\t56\t1\t\t\t\t\t\tweap45\t2\tarmo45\t1\tweap48\t6\tarmo48\t3\tweap51\t14\tarmo51\t7\tweap54\t6\tarmo54\t3\tAct 3 (N) Equip B\t1530\t\t\t42\t1572\t0.9733\t0\r\nAct 4 (N) Equip B\t1\t58\t1\t\t\t\t\t\tweap48\t2\tarmo48\t1\tweap51\t6\tarmo51\t3\tweap54\t14\tarmo54\t7\tweap57\t2\tarmo57\t1\tAct 4 (N) Equip A\t1360\t\t\t36\t1396\t0.9742\t0\r\nAct 4 (N) Equip C\t1\t60\t1\t\t\t\t\t\tweap48\t2\tarmo48\t1\tweap51\t6\tarmo51\t3\tweap54\t14\tarmo54\t7\tweap57\t6\tarmo57\t3\tAct 4 (N) Equip A\t1658\t\t\t42\t1700\t0.9753\t0\r\nAct 5 (N) Equip A\t1\t62\t1\t\t\t\t\t\tweap51\t2\tarmo51\t1\tweap54\t6\tarmo54\t3\tweap57\t14\tarmo57\t7\tweap60\t2\tarmo60\t1\tAct 4 (N) Equip B\t1445\t\t\t36\t1481\t0.9757\t0\r\nAct 5 (N) Equip B\t1\t64\t1\t\t\t\t\t\tweap51\t2\tarmo51\t1\tweap54\t6\tarmo54\t3\tweap57\t14\tarmo57\t7\tweap60\t6\tarmo60\t3\tAct 5 (N) Equip A\t1743\t\t\t42\t1785\t0.9765\t0\r\nAct 5 (N) Equip C\t1\t66\t1\t\t\t\t\t\tweap54\t2\tarmo54\t1\tweap57\t6\tarmo57\t3\tweap60\t14\tarmo60\t7\tweap63\t2\tarmo63\t1\tAct 5 (N) Equip B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 1 (H) Equip A\t1\t68\t1\t\t\t\t\t\tweap54\t2\tarmo54\t1\tweap57\t6\tarmo57\t3\tweap60\t14\tarmo60\t7\tweap63\t6\tarmo63\t3\tAct 5 (N) Equip C\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 1 (H) Equip B\t1\t70\t1\t\t\t\t\t\tweap57\t2\tarmo57\t1\tweap60\t6\tarmo60\t3\tweap63\t14\tarmo63\t7\tweap66\t2\tarmo66\t1\tAct 1 (H) Equip A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 1 (H) Equip C\t1\t71\t1\t\t\t\t\t\tweap57\t2\tarmo57\t1\tweap60\t6\tarmo60\t3\tweap63\t14\tarmo63\t7\tweap66\t6\tarmo66\t3\tAct 1 (H) Equip A\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 2 (H) Equip A\t1\t73\t1\t\t\t\t\t\tweap60\t2\tarmo60\t1\tweap63\t6\tarmo63\t3\tweap66\t14\tarmo66\t7\tweap69\t2\tarmo69\t1\tAct 1 (H) Equip B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 2 (H) Equip B\t1\t75\t1\t\t\t\t\t\tweap60\t2\tarmo60\t1\tweap63\t6\tarmo63\t3\tweap66\t14\tarmo66\t7\tweap69\t6\tarmo69\t3\tAct 2 (H) Equip A\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 2 (H) Equip C\t1\t76\t1\t\t\t\t\t\tweap63\t2\tarmo63\t1\tweap66\t6\tarmo66\t3\tweap69\t14\tarmo69\t7\tweap72\t2\tarmo72\t1\tAct 2 (H) Equip A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 3 (H) Equip A\t1\t77\t1\t\t\t\t\t\tweap63\t2\tarmo63\t1\tweap66\t6\tarmo66\t3\tweap69\t14\tarmo69\t7\tweap72\t6\tarmo72\t3\tAct 2 (H) Equip B\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 3 (H) Equip B\t1\t78\t1\t\t\t\t\t\tweap66\t2\tarmo66\t1\tweap69\t6\tarmo69\t3\tweap72\t14\tarmo72\t7\tweap75\t2\tarmo75\t1\tAct 3 (H) Equip A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 3 (H) Equip C\t1\t79\t1\t\t\t\t\t\tweap66\t2\tarmo66\t1\tweap69\t6\tarmo69\t3\tweap72\t14\tarmo72\t7\tweap75\t6\tarmo75\t3\tAct 3 (H) Equip A\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 4 (H) Equip A\t1\t80\t1\t\t\t\t\t\tweap69\t2\tarmo69\t1\tweap72\t6\tarmo72\t3\tweap75\t14\tarmo75\t7\tweap78\t2\tarmo78\t1\tAct 3 (H) Equip B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 4 (H) Equip B\t1\t81\t1\t\t\t\t\t\tweap69\t2\tarmo69\t1\tweap72\t6\tarmo72\t3\tweap75\t14\tarmo75\t7\tweap78\t6\tarmo78\t3\tAct 4 (H) Equip A\t1785\t\t\t42\t1827\t0.9770\t0\r\nAct 4 (H) Equip C\t1\t82\t1\t\t\t\t\t\tweap72\t2\tarmo72\t1\tweap75\t6\tarmo75\t3\tweap78\t14\tarmo78\t7\tweap81\t2\tarmo81\t1\tAct 4 (H) Equip A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Equip A\t1\t83\t1\t\t\t\t\t\tweap75\t2\tarmo75\t1\tweap78\t6\tarmo78\t3\tweap81\t14\tarmo81\t7\tweap84\t2\tarmo84\t1\tAct 4 (H) Equip B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Equip B\t1\t84\t1\t\t\t\t\t\tweap78\t2\tarmo78\t1\tweap81\t6\tarmo81\t3\tweap84\t14\tarmo84\t7\tweap87\t2\tarmo87\t1\tAct 5 (H) Equip A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Equip C\t1\t85\t1\t\t\t\t\t\tweap81\t2\tarmo81\t1\tweap84\t6\tarmo84\t3\tweap87\t14\tarmo87\t7\tweap87\t1\tarmo87\t1\tAct 5 (H) Equip B\t1530\t\t\t35\t1565\t0.9776\t0\r\nAct 1 Melee A\t2\t0\t1\t\t\t\t\t\tmele3\t7\tarmo3\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Melee B\t2\t5\t1\t\t\t\t\t\tmele3\t3\tarmo3\t3\tmele6\t7\tarmo6\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Melee C\t2\t9\t1\t\t\t\t\t\tmele3\t2\tarmo3\t1\tmele6\t6\tarmo6\t3\tmele9\t14\tarmo9\t7\tmele12\t2\tarmo12\t1\t\t\t\t\t\t\t\t0\r\nAct 2 Melee A\t2\t12\t1\t\t\t\t\t\tmele6\t2\tarmo6\t1\tmele9\t6\tarmo9\t3\tmele12\t14\tarmo12\t7\tmele15\t2\tarmo15\t1\tAct 1 Melee C\t30\t\t\t36\t66\t0.4545\t0\r\nAct 2 Melee B\t2\t15\t1\t\t\t\t\t\tmele9\t2\tarmo9\t1\tmele12\t6\tarmo12\t3\tmele15\t14\tarmo15\t7\tmele18\t2\tarmo18\t1\tAct 2 Melee A\t60\t\t\t36\t96\t0.6250\t0\r\nAct 2 Melee C\t2\t18\t1\t\t\t\t\t\tmele12\t2\tarmo12\t1\tmele15\t6\tarmo15\t3\tmele18\t14\tarmo18\t7\tmele21\t2\tarmo21\t1\tAct 2 Melee B\t90\t\t\t36\t126\t0.7143\t0\r\nAct 3 Melee A\t2\t20\t1\t\t\t\t\t\tmele15\t2\tarmo15\t1\tmele18\t6\tarmo18\t3\tmele21\t14\tarmo21\t7\tmele24\t2\tarmo24\t1\tAct 2 Melee C\t120\t\t\t36\t156\t0.7692\t0\r\nAct 3 Melee B\t2\t22\t1\t\t\t\t\t\tmele18\t2\tarmo18\t1\tmele21\t6\tarmo21\t3\tmele24\t14\tarmo24\t7\tmele27\t2\tarmo27\t1\tAct 3 Melee A\t150\t\t\t36\t186\t0.8065\t0\r\nAct 3 Melee C\t2\t24\t1\t\t\t\t\t\tmele21\t2\tarmo21\t1\tmele24\t6\tarmo24\t3\tmele27\t14\tarmo27\t7\tmele30\t2\tarmo30\t1\tAct 3 Melee B\t180\t\t\t36\t216\t0.8333\t0\r\nAct 4 Melee A\t2\t26\t1\t\t\t\t\t\tmele24\t2\tarmo24\t1\tmele27\t6\tarmo27\t3\tmele30\t14\tarmo30\t4\tmele33\t2\tarmo33\t1\tAct 3 Melee C\t210\t\t\t33\t243\t0.8642\t0\r\nAct 4 Melee B\t2\t29\t1\t\t\t\t\t\tmele27\t2\tarmo27\t1\tmele30\t6\tarmo30\t3\tmele33\t14\tarmo33\t3\tmele36\t2\tarmo36\t1\tAct 4 Melee A\t260\t\t\t32\t292\t0.8904\t0\r\nAct 5 Melee A\t2\t32\t1\t\t\t\t\t\tmele27\t2\tarmo27\t1\tmele30\t6\tarmo30\t3\tmele33\t14\tarmo33\t3\tmele36\t7\tarmo36\t5\tAct 4 Melee B\t400\t\t\t41\t441\t0.9070\t0\r\nAct 5 Melee B\t2\t34\t1\t\t\t\t\t\tmele30\t2\tarmo30\t1\tmele33\t6\tarmo33\t2\tmele36\t14\tarmo36\t7\tmele39\t2\tarmo39\t1\tAct 5 Melee A\t489\t\t\t35\t524\t0.9332\t0\r\nAct 5 Melee C\t2\t36\t1\t\t\t\t\t\tmele30\t2\tarmo30\t1\tmele33\t6\tarmo33\t2\tmele36\t14\tarmo36\t7\tmele39\t2\tarmo39\t1\tAct 5 Melee B\t629\t\t\t35\t664\t0.9473\t0\r\nAct 1 (N) Melee A\t2\t38\t1\t\t\t\t\t\tweap33\t2\tarmo33\t1\tweap36\t6\tarmo36\t3\tweap39\t14\tarmo39\t7\tweap42\t2\tarmo42\t1\tAct 5 Melee C\t769\t\t\t36\t805\t0.9553\t0\r\nAct 1 (N) Melee B\t2\t40\t1\t\t\t\t\t\tweap36\t2\tarmo36\t1\tweap39\t6\tarmo39\t3\tweap42\t14\tarmo42\t7\tweap45\t2\tarmo45\t1\tAct 1 (N) Melee A\t935\t\t\t36\t971\t0.9629\t0\r\nAct 2 (N) Melee A\t2\t42\t1\t\t\t\t\t\tweap36\t2\tarmo36\t1\tweap39\t6\tarmo39\t3\tweap42\t14\tarmo42\t7\tweap45\t6\tarmo45\t3\tAct 1 (N) Melee B\t1148\t\t\t42\t1190\t0.9647\t0\r\nAct 2 (N) Melee B\t2\t44\t1\t\t\t\t\t\tweap39\t2\tarmo39\t1\tweap42\t6\tarmo42\t3\tweap45\t14\tarmo45\t7\tweap48\t2\tarmo48\t1\tAct 2 (N) Melee A\t1020\t\t\t36\t1056\t0.9659\t0\r\nAct 3 (N) Melee A\t2\t46\t1\t\t\t\t\t\tweap42\t2\tarmo42\t1\tweap45\t6\tarmo45\t3\tweap48\t14\tarmo48\t7\tweap51\t2\tarmo51\t1\tAct 2 (N) Melee B\t1063\t\t\t36\t1099\t0.9672\t0\r\nAct 3 (N) Melee B\t2\t48\t1\t\t\t\t\t\tweap45\t2\tarmo45\t1\tweap48\t6\tarmo48\t3\tweap51\t14\tarmo51\t7\tweap54\t2\tarmo54\t1\tAct 3 (N) Melee A\t1105\t\t\t36\t1141\t0.9684\t0\r\nAct 4 (N) Melee A\t2\t51\t1\t\t\t\t\t\tweap45\t2\tarmo45\t1\tweap48\t6\tarmo48\t3\tweap51\t14\tarmo51\t7\tweap54\t6\tarmo54\t3\tAct 3 (N) Melee B\t1339\t\t\t42\t1381\t0.9696\t0\r\nAct 4 (N) Melee B\t2\t54\t1\t\t\t\t\t\tweap48\t2\tarmo48\t1\tweap51\t6\tarmo51\t3\tweap54\t14\tarmo54\t7\tweap57\t2\tarmo57\t1\tAct 4 (N) Melee A\t1190\t\t\t36\t1226\t0.9706\t0\r\nAct 5 (N) Melee A\t2\t57\t1\t\t\t\t\t\tweap51\t2\tarmo51\t1\tweap54\t6\tarmo54\t3\tweap57\t14\tarmo57\t7\tweap60\t2\tarmo60\t1\tAct 4 (N) Melee B\t1275\t\t\t36\t1311\t0.9725\t0\r\nAct 5 (N) Melee B\t2\t60\t1\t\t\t\t\t\tweap51\t2\tarmo51\t1\tweap54\t6\tarmo54\t3\tweap57\t14\tarmo57\t7\tweap60\t6\tarmo60\t3\tAct 5 (N) Melee A\t1743\t\t\t42\t1785\t0.9765\t0\r\nAct 5 (N) Melee C\t2\t63\t1\t\t\t\t\t\tweap54\t2\tarmo54\t1\tweap57\t6\tarmo57\t3\tweap60\t14\tarmo60\t7\tweap63\t2\tarmo63\t1\tAct 5 (N) Melee B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 1 (H) Melee A\t2\t66\t1\t\t\t\t\t\tweap54\t2\tarmo54\t1\tweap57\t6\tarmo57\t3\tweap60\t14\tarmo60\t7\tweap63\t6\tarmo63\t3\tAct 5 (N) Melee C\t1781\t\t\t42\t1823\t0.9770\t0\r\nAct 1 (H) Melee B\t2\t68\t1\t\t\t\t\t\tweap57\t2\tarmo57\t1\tweap60\t6\tarmo60\t3\tweap63\t14\tarmo63\t7\tweap66\t2\tarmo66\t1\tAct 1 (H) Melee A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 2 (H) Melee A\t2\t71\t1\t\t\t\t\t\tweap60\t2\tarmo60\t1\tweap63\t6\tarmo63\t3\tweap66\t14\tarmo66\t7\tweap69\t2\tarmo69\t1\tAct 1 (H) Melee B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 2 (H) Melee B\t2\t73\t1\t\t\t\t\t\tweap63\t2\tarmo63\t1\tweap66\t6\tarmo66\t3\tweap69\t14\tarmo69\t7\tweap72\t2\tarmo72\t1\tAct 2 (H) Melee A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 3 (H) Melee A\t2\t75\t1\t\t\t\t\t\tweap63\t2\tarmo63\t1\tweap66\t6\tarmo66\t3\tweap69\t14\tarmo69\t7\tweap72\t6\tarmo72\t3\tAct 2 (H) Melee B\t1781\t\t\t42\t1823\t0.9770\t0\r\nAct 3 (H) Melee B\t2\t77\t1\t\t\t\t\t\tweap66\t2\tarmo66\t1\tweap69\t6\tarmo69\t3\tweap72\t14\tarmo72\t7\tweap75\t2\tarmo75\t1\tAct 3 (H) Melee A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 4 (H) Melee A\t2\t79\t1\t\t\t\t\t\tweap69\t2\tarmo69\t1\tweap72\t6\tarmo72\t3\tweap75\t14\tarmo75\t7\tweap78\t2\tarmo78\t1\tAct 3 (H) Melee B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 4 (H) Melee B\t2\t80\t1\t\t\t\t\t\tweap72\t2\tarmo72\t1\tweap75\t6\tarmo75\t3\tweap78\t14\tarmo78\t7\tweap81\t2\tarmo81\t1\tAct 4 (H) Melee A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Melee A\t2\t81\t1\t\t\t\t\t\tweap75\t2\tarmo75\t1\tweap78\t6\tarmo78\t3\tweap81\t14\tarmo81\t7\tweap84\t2\tarmo84\t1\tAct 4 (H) Melee B\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Melee B\t2\t83\t1\t\t\t\t\t\tweap78\t2\tarmo78\t1\tweap81\t6\tarmo81\t3\tweap84\t14\tarmo84\t7\tweap87\t2\tarmo87\t1\tAct 5 (H) Melee A\t1530\t\t\t36\t1566\t0.9770\t0\r\nAct 5 (H) Melee C\t2\t85\t1\t\t\t\t\t\tweap81\t2\tarmo81\t1\tweap84\t6\tarmo84\t3\tweap87\t14\tarmo87\t7\tweap87\t1\tarmo87\t1\tAct 5 (H) Melee B\t1530\t\t\t35\t1565\t0.9776\t0\r\nAct 1 Bow A\t3\t0\t1\t\t\t\t\t\tbow3\t36\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Bow B\t3\t5\t1\t\t\t\t\t\tbow3\t20\tbow6\t16\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Bow C\t3\t9\t1\t\t\t\t\t\tbow3\t10\tbow6\t16\tbow9\t10\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Bow A\t3\t12\t1\t\t\t\t\t\tbow3\t3\tbow6\t15\tbow9\t15\tbow12\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Bow B\t3\t15\t1\t\t\t\t\t\tbow3\t1\tbow6\t7\tbow9\t20\tbow12\t7\tbow15\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Bow C\t3\t18\t1\t\t\t\t\t\tbow3\t1\tbow6\t3\tbow9\t14\tbow12\t14\tbow15\t3\tbow18\t1\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Bow A\t3\t20\t1\t\t\t\t\t\tbow3\t1\tbow6\t3\tbow9\t6\tbow12\t12\tbow15\t6\tbow18\t3\tbow21\t1\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Bow B\t3\t22\t1\t\t\t\t\t\tbow3\t1\tbow6\t3\tbow9\t6\tbow12\t8\tbow15\t8\tbow18\t6\tbow21\t3\tbow24\t1\t\t\t\t\t\t\t\t0\r\nAct 3 Bow C\t3\t24\t1\t\t\t\t\t\tbow3\t1\tbow6\t2\tbow9\t5\tbow12\t7\tbow15\t8\tbow18\t7\tbow21\t4\tbow24\t2\t\t\t\t\t\t\t\t0\r\nAct 4 Bow A\t3\t26\t1\t\t\t\t\t\tbow6\t1\tbow9\t3\tbow12\t6\tbow15\t8\tbow18\t8\tbow21\t6\tbow24\t3\tbow27\t1\tAct 3 Bow C\t110\t\t\t36\t146\t0.7534\t0\r\nAct 4 Bow B\t3\t29\t1\t\t\t\t\t\tbow6\t1\tbow9\t2\tbow12\t5\tbow15\t7\tbow18\t8\tbow21\t7\tbow24\t4\tbow27\t2\tAct 4 Bow A\t180\t\t\t36\t216\t0.8333\t0\r\nAct 5 Bow A\t3\t32\t1\t\t\t\t\t\tbow9\t1\tbow12\t3\tbow15\t6\tbow18\t8\tbow21\t8\tbow24\t6\tbow27\t3\tbow30\t1\tAct 4 Bow B\t270\t\t\t36\t306\t0.8824\t0\r\nAct 5 Bow B\t3\t34\t1\t\t\t\t\t\tbow9\t1\tbow12\t2\tbow15\t5\tbow18\t7\tbow21\t8\tbow24\t7\tbow27\t4\tbow30\t2\tAct 5 Bow A\t380\t\t\t36\t416\t0.9135\t0\r\nAct 5 Bow C\t3\t36\t1\t\t\t\t\t\tbow9\t1\tbow12\t2\tbow15\t5\tbow18\t7\tbow21\t8\tbow24\t7\tbow27\t4\tbow30\t2\tAct 5 Bow B\t500\t\t\t36\t536\t0.9328\t0\r\nAct 1 (N) Bow A\t3\t38\t1\t\t\t\t\t\tbow12\t1\tbow15\t2\tbow18\t5\tbow21\t7\tbow24\t8\tbow27\t7\tbow30\t4\tbow33\t2\tAct 5 Bow C\t630\t\t\t36\t666\t0.9459\t0\r\nAct 1 (N) Bow B\t3\t40\t1\t\t\t\t\t\tbow15\t1\tbow18\t2\tbow21\t5\tbow24\t7\tbow27\t8\tbow30\t7\tbow33\t4\tbow36\t2\tAct 1 (N) Bow A\t770\t\t\t36\t806\t0.9553\t0\r\nAct 2 (N) Bow A\t3\t42\t1\t\t\t\t\t\tbow18\t1\tbow21\t2\tbow24\t5\tbow27\t7\tbow30\t8\tbow33\t7\tbow36\t4\tbow39\t2\tAct 1 (N) Bow B\t920\t\t\t36\t956\t0.9623\t0\r\nAct 2 (N) Bow B\t3\t44\t1\t\t\t\t\t\tbow21\t1\tbow24\t2\tbow27\t5\tbow30\t7\tbow33\t8\tbow36\t7\tbow39\t4\tbow42\t2\tAct 2 (N) Bow A\t1070\t\t\t36\t1106\t0.9675\t0\r\nAct 3 (N) Bow A\t3\t46\t1\t\t\t\t\t\tbow24\t1\tbow27\t2\tbow30\t5\tbow33\t7\tbow36\t8\tbow39\t7\tbow42\t4\tbow45\t2\tAct 2 (N) Bow B\t1220\t\t\t36\t1256\t0.9713\t0\r\nAct 3 (N) Bow B\t3\t48\t1\t\t\t\t\t\tbow27\t1\tbow30\t2\tbow33\t5\tbow36\t7\tbow39\t8\tbow42\t7\tbow45\t4\tbow48\t2\tAct 3 (N) Bow A\t1370\t\t\t36\t1406\t0.9744\t0\r\nAct 4 (N) Bow A\t3\t51\t1\t\t\t\t\t\tbow30\t1\tbow33\t2\tbow36\t5\tbow39\t7\tbow42\t8\tbow45\t7\tbow48\t4\tbow51\t2\tAct 3 (N) Bow B\t1520\t\t\t36\t1556\t0.9769\t0\r\nAct 4 (N) Bow B\t3\t54\t1\t\t\t\t\t\tbow33\t1\tbow36\t2\tbow39\t5\tbow42\t7\tbow45\t8\tbow48\t7\tbow51\t4\tbow54\t2\tAct 4 (N) Bow A\t1670\t\t\t36\t1706\t0.9789\t0\r\nAct 5 (N) Bow A\t3\t57\t1\t\t\t\t\t\tbow36\t1\tbow39\t2\tbow42\t5\tbow45\t7\tbow48\t8\tbow51\t7\tbow54\t4\tbow57\t2\tAct 4 (N) Bow B\t1820\t\t\t36\t1856\t0.9806\t0\r\nAct 5 (N) Bow B\t3\t60\t1\t\t\t\t\t\tbow39\t1\tbow42\t2\tbow45\t5\tbow48\t7\tbow51\t8\tbow54\t7\tbow57\t4\tbow60\t2\tAct 5 (N) Bow A\t1970\t\t\t36\t2006\t0.9821\t0\r\nAct 5 (N) Bow C\t3\t63\t1\t\t\t\t\t\tbow42\t1\tbow45\t2\tbow48\t5\tbow51\t7\tbow54\t8\tbow57\t7\tbow60\t4\tbow63\t2\tAct 5 (N) Bow B\t2120\t\t\t36\t2156\t0.9833\t0\r\nAct 1 (H) Bow A\t3\t66\t1\t\t\t\t\t\tbow45\t1\tbow48\t2\tbow51\t5\tbow54\t7\tbow57\t8\tbow60\t7\tbow63\t4\tbow66\t2\tAct 5 (N) Bow C\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 1 (H) Bow B\t3\t69\t1\t\t\t\t\t\tbow48\t1\tbow51\t2\tbow54\t5\tbow57\t7\tbow60\t8\tbow63\t7\tbow66\t4\tbow69\t2\tAct 1 (H) Bow A\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 2 (H) Bow A\t3\t71\t1\t\t\t\t\t\tbow51\t1\tbow54\t2\tbow57\t5\tbow60\t7\tbow63\t8\tbow66\t7\tbow69\t4\tbow72\t2\tAct 1 (H) Bow B\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 2 (H) Bow B\t3\t73\t1\t\t\t\t\t\tbow54\t1\tbow57\t2\tbow60\t5\tbow63\t7\tbow66\t8\tbow69\t7\tbow72\t4\tbow75\t2\tAct 2 (H) Bow A\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 3 (H) Bow A\t3\t75\t1\t\t\t\t\t\tbow57\t1\tbow60\t2\tbow63\t5\tbow66\t7\tbow69\t8\tbow72\t7\tbow75\t4\tbow78\t2\tAct 2 (H) Bow B\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 3 (H) Bow B\t3\t77\t1\t\t\t\t\t\tbow60\t1\tbow63\t2\tbow66\t5\tbow69\t7\tbow72\t8\tbow75\t7\tbow78\t4\tbow81\t2\tAct 3 (H) Bow A\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 4 (H) Bow A\t3\t79\t1\t\t\t\t\t\tbow63\t1\tbow66\t2\tbow69\t5\tbow72\t7\tbow75\t8\tbow78\t7\tbow81\t4\tbow84\t2\tAct 3 (H) Bow B\t2270\t\t\t36\t2306\t0.9844\t0\r\nAct 4 (H) Bow B\t3\t80\t1\t\t\t\t\t\tbow66\t1\tbow69\t2\tbow72\t5\tbow75\t7\tbow78\t8\tbow81\t7\tbow84\t2\tbow84\t1\tAct 4 (H) Bow A\t2080\t\t\t33\t2113\t0.9844\t0\r\nAct 5 (H) Bow A\t3\t82\t1\t\t\t\t\t\tbow69\t1\tbow72\t2\tbow75\t5\tbow78\t7\tbow81\t8\tbow84\t7\tbow87\t2\tbow87\t1\tAct 4 (H) Bow B\t2080\t\t\t33\t2113\t0.9844\t0\r\nAct 5 (H) Bow B\t3\t83\t1\t\t\t\t\t\tbow72\t1\tbow75\t2\tbow78\t5\tbow81\t7\tbow84\t8\tbow87\t7\tbow87\t2\tbow87\t1\tAct 5 (H) Bow A\t2080\t\t\t33\t2113\t0.9844\t0\r\nAct 5 (H) Bow C\t3\t85\t1\t\t\t\t\t\tbow75\t1\tbow78\t2\tbow81\t5\tbow84\t7\tbow87\t8\tbow87\t1\tbow87\t1\tbow87\t1\tAct 5 (H) Bow B\t1655\t\t\t26\t1681\t0.9845\t0\r\nAct 1 Magic A\t4\t0\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp1\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Magic B\t4\t5\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp1\t4\tmp2\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Magic C\t4\t9\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp1\t2\tmp2\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Magic A\t4\t12\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp1\t1\tmp2\t4\tmp3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Magic B\t4\t15\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp1\t1\tmp2\t3\tmp3\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Magic C\t4\t18\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp2\t2\tmp3\t3\tmp4\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Magic A\t4\t20\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp3\t4\tmp4\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Magic B\t4\t22\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp3\t3\tmp4\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Magic C\t4\t24\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp3\t2\tmp4\t3\tmp5\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Magic A\t4\t26\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp3\t1\tmp4\t4\tmp5\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Magic B\t4\t29\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t4\tmp5\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Magic A\t4\t32\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t3\tmp5\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Magic B\t4\t34\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Magic C\t4\t36\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Magic A\t4\t38\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Magic B\t4\t40\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Magic A\t4\t42\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Magic B\t4\t44\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Magic A\t4\t46\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Magic B\t4\t48\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Magic A\t4\t51\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Magic B\t4\t54\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Magic A\t4\t57\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Magic B\t4\t60\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Magic C\t4\t63\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Magic A\t4\t66\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Magic B\t4\t69\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Magic A\t4\t71\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Magic B\t4\t73\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Magic A\t4\t75\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Magic B\t4\t77\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Magic A\t4\t79\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Magic B\t4\t80\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Magic A\t4\t82\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Magic B\t4\t83\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Magic C\t4\t85\t1\t\t\t\t\t\ttsc\t2\tisc\t4\tmp4\t2\tmp5\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Good\t5\t0\t1\t\t\t\t\t\tJewelry A\t5\tChipped Gem\t5\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Good\t5\t12\t1\t\t\t\t\t\tJewelry B\t20\tChipped Gem\t12\tFlawed Gem\t4\tRunes 1\t3\tRunes 2\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Good\t5\t18\t1\t\t\t\t\t\tJewelry C\t20\tChipped Gem\t8\tFlawed Gem\t8\tRunes 3\t3\tRunes 4\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Good\t5\t26\t1\t\t\t\t\t\tJewelry C\t50\tChipped Gem\t14\tFlawed Gem\t28\tNormal Gem\t42\tRunes 5\t14\tRunes 6\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Good\t5\t32\t1\t\t\t\t\t\tJewelry C\t50\tChipped Gem\t6\tFlawed Gem\t8\tNormal Gem\t24\tFlawless Gem\t4\tRunes 7\t10\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Good\t5\t38\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t6\tFlawed Gem\t8\tNormal Gem\t28\tFlawless Gem\t14\tRunes 8\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Good\t5\t42\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 9\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Good\t5\t46\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 10\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Good\t5\t51\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 11\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Good\t5\t57\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 12\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Good\t5\t66\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 13\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Good\t5\t72\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 14\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Good\t5\t78\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 15\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Good\t5\t82\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 16\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Good\t5\t85\t1\t\t\t\t\t\tJewelry C\t60\tChipped Gem\t4\tFlawed Gem\t10\tNormal Gem\t14\tFlawless Gem\t28\tRunes 17\t14\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Chest A\t6\t0\t4\t\t\t\t\t100\tgld\t15\tAct 1 Junk\t15\tAct 1 Equip A\t10\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Chest B\t6\t5\t4\t\t\t\t\t100\tgld\t15\tAct 1 Junk\t15\tAct 1 Equip B\t10\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Chest C\t6\t9\t4\t\t\t\t\t100\tgld\t15\tAct 1 Junk\t12\tAct 2 Junk\t3\tAct 1 Equip C\t15\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Chest A\t6\t12\t4\t\t\t\t\t100\tgld\t15\tAct 2 Junk\t15\tAct 2 Equip A\t10\tAct 2 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Chest B\t6\t15\t4\t\t\t\t\t100\tgld\t15\tAct 2 Junk\t15\tAct 2 Equip B\t10\tAct 2 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Chest C\t6\t18\t4\t\t\t\t\t100\tgld\t15\tAct 2 Junk\t12\tAct 3 Junk\t3\tAct 2 Equip C\t15\tAct 2 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Chest A\t6\t20\t4\t\t\t\t\t100\tgld\t15\tAct 3 Junk\t15\tAct 3 Equip A\t10\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Chest B\t6\t22\t4\t\t\t\t\t100\tgld\t15\tAct 3 Junk\t15\tAct 3 Equip B\t10\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Chest C\t6\t24\t4\t\t\t\t\t100\tgld\t15\tAct 3 Junk\t15\tAct 3 Equip C\t10\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Chest A\t6\t26\t4\t\t\t\t\t100\tgld\t15\tAct 4 Junk\t15\tAct 4 Equip A\t10\tAct 4 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Chest B\t6\t28\t4\t\t\t\t\t100\tgld\t15\tAct 4 Junk\t15\tAct 4 Equip B\t10\tAct 4 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Chest C\t6\t30\t4\t\t\t\t\t100\tgld\t15\tAct 4 Junk\t15\tAct 4 Equip B\t10\tAct 4 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Chest A\t6\t32\t4\t\t\t\t\t100\tgld\t15\tAct 5 Junk\t15\tAct 5 Equip A\t10\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Chest B\t6\t34\t4\t\t\t\t\t100\tgld\t15\tAct 5 Junk\t15\tAct 5 Equip B\t10\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Chest C\t6\t36\t4\t\t\t\t\t100\tgld\t15\tAct 5 Junk\t15\tAct 5 Equip B\t10\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Chest A\t6\t38\t4\t\t\t\t\t100\tgld\t15\tAct 1 (N) Junk\t15\tAct 1 (N) Equip A\t10\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Chest B\t6\t40\t4\t\t\t\t\t100\tgld\t15\tAct 1 (N) Junk\t15\tAct 1 (N) Equip B\t10\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Chest C\t6\t42\t4\t\t\t\t\t100\tgld\t15\tAct 1 (N) Junk\t15\tAct 1 (N) Equip B\t10\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Chest A\t6\t44\t4\t\t\t\t\t100\tgld\t15\tAct 2 (N) Junk\t15\tAct 2 (N) Equip A\t10\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Chest B\t6\t46\t4\t\t\t\t\t100\tgld\t15\tAct 2 (N) Junk\t15\tAct 2 (N) Equip B\t10\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Chest C\t6\t48\t4\t\t\t\t\t100\tgld\t15\tAct 2 (N) Junk\t15\tAct 2 (N) Equip B\t10\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Chest A\t6\t50\t4\t\t\t\t\t100\tgld\t15\tAct 3 (N) Junk\t15\tAct 3 (N) Equip A\t10\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Chest B\t6\t52\t4\t\t\t\t\t100\tgld\t15\tAct 3 (N) Junk\t15\tAct 3 (N) Equip B\t10\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Chest C\t6\t54\t4\t\t\t\t\t100\tgld\t15\tAct 3 (N) Junk\t15\tAct 3 (N) Equip B\t10\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Chest A\t6\t56\t4\t\t\t\t\t100\tgld\t15\tAct 4 (N) Junk\t15\tAct 4 (N) Equip A\t10\tAct 4 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Chest B\t6\t58\t4\t\t\t\t\t100\tgld\t15\tAct 4 (N) Junk\t15\tAct 4 (N) Equip B\t10\tAct 4 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Chest C\t6\t60\t4\t\t\t\t\t100\tgld\t15\tAct 4 (N) Junk\t15\tAct 4 (N) Equip C\t10\tAct 4 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Chest A\t6\t62\t4\t\t\t\t\t100\tgld\t15\tAct 5 (N) Junk\t15\tAct 5 (N) Equip A\t10\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Chest B\t6\t64\t4\t\t\t\t\t100\tgld\t15\tAct 5 (N) Junk\t15\tAct 5 (N) Equip B\t10\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Chest C\t6\t66\t4\t\t\t\t\t100\tgld\t15\tAct 5 (N) Junk\t15\tAct 5 (N) Equip B\t10\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Chest A\t6\t68\t4\t\t\t\t\t100\tgld\t15\tAct 1 (H) Junk\t15\tAct 1 (H) Equip A\t10\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Chest B\t6\t70\t4\t\t\t\t\t100\tgld\t15\tAct 1 (H) Junk\t15\tAct 1 (H) Equip B\t10\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Chest C\t6\t71\t4\t\t\t\t\t100\tgld\t15\tAct 1 (H) Junk\t15\tAct 1 (H) Equip B\t10\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Chest A\t6\t72\t4\t\t\t\t\t100\tgld\t15\tAct 2 (H) Junk\t15\tAct 2 (H) Equip A\t10\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Chest B\t6\t74\t4\t\t\t\t\t100\tgld\t15\tAct 2 (H) Junk\t15\tAct 2 (H) Equip B\t10\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Chest C\t6\t75\t4\t\t\t\t\t100\tgld\t15\tAct 2 (H) Junk\t15\tAct 2 (H) Equip B\t10\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Chest A\t6\t76\t4\t\t\t\t\t100\tgld\t15\tAct 3 (H) Junk\t15\tAct 3 (H) Equip A\t10\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Chest B\t6\t78\t4\t\t\t\t\t100\tgld\t15\tAct 3 (H) Junk\t15\tAct 3 (H) Equip B\t10\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Chest C\t6\t79\t4\t\t\t\t\t100\tgld\t15\tAct 3 (H) Junk\t15\tAct 3 (H) Equip B\t10\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Chest A\t6\t80\t4\t\t\t\t\t100\tgld\t15\tAct 4 (H) Junk\t15\tAct 4 (H) Equip A\t10\tAct 4 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Chest B\t6\t81\t4\t\t\t\t\t100\tgld\t15\tAct 4 (H) Junk\t15\tAct 4 (H) Equip B\t10\tAct 4 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Chest C\t6\t82\t4\t\t\t\t\t100\tgld\t15\tAct 4 (H) Junk\t15\tAct 4 (H) Equip B\t10\tAct 4 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Chest A\t6\t83\t4\t\t\t\t\t100\tgld\t15\tAct 5 (H) Junk\t15\tAct 5 (H) Equip A\t10\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Chest B\t6\t84\t4\t\t\t\t\t100\tgld\t15\tAct 5 (H) Junk\t15\tAct 5 (H) Equip B\t10\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Chest C\t6\t85\t4\t\t\t\t\t100\tgld\t15\tAct 5 (H) Junk\t15\tAct 5 (H) Equip B\t10\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 H2H A\t7\t0\t1\t\t\t\t\t100\tgld\t21\tAct 1 Equip A\t16\tAct 1 Junk\t21\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 H2H B\t7\t5\t1\t\t\t\t\t100\tgld\t21\tAct 1 Equip B\t16\tAct 1 Junk\t21\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 H2H C\t7\t9\t1\t\t\t\t\t100\tgld\t21\tAct 1 Equip C\t16\tAct 1 Junk\t21\tAct 1 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 H2H A\t7\t12\t1\t\t\t\t\t100\tgld\t21\tAct 2 Equip A\t16\tAct 2 Junk\t21\tAct 2 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 H2H B\t7\t15\t1\t\t\t\t\t100\tgld\t21\tAct 2 Equip B\t16\tAct 2 Junk\t21\tAct 2 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 H2H C\t7\t18\t1\t\t\t\t\t100\tgld\t21\tAct 2 Equip C\t16\tAct 2 Junk\t21\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 H2H A\t7\t20\t1\t\t\t\t\t100\tgld\t21\tAct 3 Equip A\t16\tAct 3 Junk\t21\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 H2H B\t7\t22\t1\t\t\t\t\t100\tgld\t21\tAct 3 Equip B\t16\tAct 3 Junk\t21\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 H2H C\t7\t24\t1\t\t\t\t\t100\tgld\t21\tAct 3 Equip C\t16\tAct 3 Junk\t21\tAct 3 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 H2H A\t7\t26\t1\t\t\t\t\t100\tgld\t21\tAct 4 Equip A\t16\tAct 4 Junk\t21\tAct 4 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 H2H B\t7\t29\t1\t\t\t\t\t100\tgld\t21\tAct 4 Equip B\t16\tAct 4 Junk\t21\tAct 4 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 H2H A\t7\t32\t1\t\t\t\t\t100\tgld\t21\tAct 5 Equip A\t16\tAct 5 Junk\t21\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 H2H B\t7\t34\t1\t\t\t\t\t100\tgld\t21\tAct 5 Equip B\t16\tAct 5 Junk\t21\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 H2H C\t7\t36\t1\t\t\t\t\t100\tgld\t21\tAct 5 Equip C\t16\tAct 5 Junk\t21\tAct 5 Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) H2H A\t7\t38\t1\t\t\t\t\t100\tgld\t21\tAct 1 (N) Equip A\t16\tAct 1 (N) Junk\t21\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) H2H B\t7\t40\t1\t\t\t\t\t100\tgld\t21\tAct 1 (N) Equip B\t16\tAct 1 (N) Junk\t21\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) H2H C\t7\t41\t1\t\t\t\t\t100\tgld\t21\tAct 1 (N) Equip B\t16\tAct 1 (N) Junk\t21\tAct 1 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) H2H A\t7\t42\t1\t\t\t\t\t100\tgld\t21\tAct 2 (N) Equip A\t16\tAct 2 (N) Junk\t21\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) H2H B\t7\t44\t1\t\t\t\t\t100\tgld\t21\tAct 2 (N) Equip B\t16\tAct 2 (N) Junk\t21\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) H2H C\t7\t45\t1\t\t\t\t\t100\tgld\t21\tAct 2 (N) Equip B\t16\tAct 2 (N) Junk\t21\tAct 2 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) H2H A\t7\t46\t1\t\t\t\t\t100\tgld\t21\tAct 3 (N) Equip A\t16\tAct 3 (N) Junk\t21\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) H2H B\t7\t48\t1\t\t\t\t\t100\tgld\t21\tAct 3 (N) Equip B\t16\tAct 3 (N) Junk\t21\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) H2H C\t7\t50\t1\t\t\t\t\t100\tgld\t21\tAct 3 (N) Equip B\t16\tAct 3 (N) Junk\t21\tAct 3 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) H2H A\t7\t51\t1\t\t\t\t\t100\tgld\t21\tAct 4 (N) Equip A\t16\tAct 4 (N) Junk\t21\tAct 4 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) H2H B\t7\t54\t1\t\t\t\t\t100\tgld\t21\tAct 4 (N) Equip B\t16\tAct 4 (N) Junk\t21\tAct 4 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) H2H A\t7\t57\t1\t\t\t\t\t100\tgld\t21\tAct 5 (N) Equip A\t16\tAct 5 (N) Junk\t21\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) H2H B\t7\t60\t1\t\t\t\t\t100\tgld\t21\tAct 5 (N) Equip B\t16\tAct 5 (N) Junk\t21\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) H2H C\t7\t62\t1\t\t\t\t\t100\tgld\t21\tAct 5 (N) Equip C\t16\tAct 5 (N) Junk\t21\tAct 5 (N) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) H2H A\t7\t63\t1\t\t\t\t\t100\tgld\t21\tAct 1 (H) Equip A\t16\tAct 1 (H) Junk\t21\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) H2H B\t7\t66\t1\t\t\t\t\t100\tgld\t21\tAct 1 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) H2H C\t7\t68\t1\t\t\t\t\t100\tgld\t21\tAct 1 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 1 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) H2H A\t7\t69\t1\t\t\t\t\t100\tgld\t21\tAct 2 (H) Equip A\t16\tAct 1 (H) Junk\t21\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) H2H B\t7\t71\t1\t\t\t\t\t100\tgld\t21\tAct 2 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) H2H C\t7\t73\t1\t\t\t\t\t100\tgld\t21\tAct 2 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 2 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) H2H A\t7\t74\t1\t\t\t\t\t100\tgld\t21\tAct 3 (H) Equip A\t16\tAct 1 (H) Junk\t21\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) H2H B\t7\t76\t1\t\t\t\t\t100\tgld\t21\tAct 3 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) H2H C\t7\t77\t1\t\t\t\t\t100\tgld\t21\tAct 3 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 3 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) H2H A\t7\t79\t1\t\t\t\t\t100\tgld\t21\tAct 4 (H) Equip A\t16\tAct 1 (H) Junk\t21\tAct 4 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) H2H B\t7\t80\t1\t\t\t\t\t100\tgld\t21\tAct 4 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 4 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) H2H A\t7\t82\t1\t\t\t\t\t100\tgld\t21\tAct 5 (H) Equip A\t16\tAct 1 (H) Junk\t21\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) H2H B\t7\t83\t1\t\t\t\t\t100\tgld\t21\tAct 5 (H) Equip B\t16\tAct 1 (H) Junk\t21\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) H2H C\t7\t85\t1\t\t\t\t\t100\tgld\t21\tAct 5 (H) Equip C\t16\tAct 1 (H) Junk\t21\tAct 5 (H) Good\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cast A\t8\t0\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip A\t15\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cast B\t8\t5\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip B\t15\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cast C\t8\t9\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip C\t15\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Magic C\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cast A\t8\t12\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip A\t15\tAct 2 Junk\t18\tAct 2 Good\t2\tAct 2 Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cast B\t8\t15\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip B\t15\tAct 2 Junk\t18\tAct 2 Good\t2\tAct 2 Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cast C\t8\t18\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip C\t15\tAct 2 Junk\t18\tAct 3 Good\t2\tAct 2 Magic C\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cast A\t8\t20\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip A\t15\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cast B\t8\t22\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip B\t15\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cast C\t8\t24\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip C\t15\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Magic C\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Cast A\t8\t26\t1\t\t\t\t\t100\tgld\t18\tAct 4 Equip A\t15\tAct 4 Junk\t18\tAct 4 Good\t2\tAct 4 Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Cast B\t8\t29\t1\t\t\t\t\t100\tgld\t18\tAct 4 Equip B\t15\tAct 4 Junk\t18\tAct 4 Good\t2\tAct 4 Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cast A\t8\t32\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip A\t15\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cast B\t8\t34\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip B\t15\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cast C\t8\t36\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip C\t15\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Magic C\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cast A\t8\t38\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip A\t15\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cast B\t8\t40\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip B\t15\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cast C\t8\t41\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip B\t15\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cast A\t8\t42\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip A\t15\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cast B\t8\t44\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip B\t15\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cast C\t8\t45\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip B\t15\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cast A\t8\t46\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip A\t15\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cast B\t8\t48\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip B\t15\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cast C\t8\t50\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip B\t15\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Cast A\t8\t51\t1\t\t\t\t\t100\tgld\t18\tAct 4 (N) Equip A\t15\tAct 4 (N) Junk\t18\tAct 4 (N) Good\t2\tAct 4 (N) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Cast B\t8\t54\t1\t\t\t\t\t100\tgld\t18\tAct 4 (N) Equip B\t15\tAct 4 (N) Junk\t18\tAct 4 (N) Good\t2\tAct 4 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cast A\t8\t57\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip A\t15\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cast B\t8\t60\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip B\t15\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cast C\t8\t62\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip C\t15\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cast A\t8\t63\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip A\t15\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cast B\t8\t66\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cast C\t8\t68\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cast A\t8\t69\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip A\t15\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cast B\t8\t71\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cast C\t8\t72\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cast A\t8\t74\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip A\t15\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cast B\t8\t75\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cast C\t8\t77\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Cast A\t8\t78\t1\t\t\t\t\t100\tgld\t18\tAct 4 (H) Equip A\t15\tAct 1 (H) Junk\t18\tAct 4 (H) Good\t2\tAct 4 (H) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Cast B\t8\t80\t1\t\t\t\t\t100\tgld\t18\tAct 4 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 4 (H) Good\t2\tAct 4 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cast A\t8\t81\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip A\t15\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Magic A\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cast B\t8\t83\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip B\t15\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cast C\t8\t85\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip C\t15\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Magic B\t7\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Miss A\t9\t0\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip A\t13\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Miss B\t9\t5\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip B\t13\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Miss C\t9\t9\t1\t\t\t\t\t100\tgld\t18\tAct 1 Equip C\t13\tAct 1 Junk\t18\tAct 1 Good\t2\tAct 1 Bow C\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Miss A\t9\t12\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip A\t13\tAct 2 Junk\t18\tAct 2 Good\t2\tAct 2 Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Miss B\t9\t15\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip B\t13\tAct 2 Junk\t18\tAct 2 Good\t2\tAct 2 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Miss C\t9\t18\t1\t\t\t\t\t100\tgld\t18\tAct 2 Equip C\t13\tAct 2 Junk\t18\tAct 3 Good\t2\tAct 2 Bow C\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Miss A\t9\t20\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip A\t13\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Miss B\t9\t22\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip B\t13\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Miss C\t9\t24\t1\t\t\t\t\t100\tgld\t18\tAct 3 Equip C\t13\tAct 3 Junk\t18\tAct 3 Good\t2\tAct 3 Bow C\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Miss A\t9\t26\t1\t\t\t\t\t100\tgld\t18\tAct 4 Equip A\t13\tAct 4 Junk\t18\tAct 4 Good\t2\tAct 4 Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Miss B\t9\t29\t1\t\t\t\t\t100\tgld\t18\tAct 4 Equip B\t13\tAct 4 Junk\t18\tAct 4 Good\t2\tAct 4 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Miss A\t9\t32\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip A\t13\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Miss B\t9\t34\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip B\t13\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Miss C\t9\t36\t1\t\t\t\t\t100\tgld\t18\tAct 5 Equip C\t13\tAct 5 Junk\t18\tAct 5 Good\t2\tAct 5 Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Miss A\t9\t38\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip A\t13\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Miss B\t9\t40\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip B\t13\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Miss C\t9\t41\t1\t\t\t\t\t100\tgld\t18\tAct 1 (N) Equip B\t13\tAct 1 (N) Junk\t18\tAct 1 (N) Good\t2\tAct 1 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Miss A\t9\t42\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip A\t13\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Miss B\t9\t44\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip B\t13\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Miss C\t9\t45\t1\t\t\t\t\t100\tgld\t18\tAct 2 (N) Equip B\t13\tAct 2 (N) Junk\t18\tAct 2 (N) Good\t2\tAct 2 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Miss A\t9\t46\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip A\t13\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Miss B\t9\t48\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip B\t13\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Miss C\t9\t50\t1\t\t\t\t\t100\tgld\t18\tAct 3 (N) Equip B\t13\tAct 3 (N) Junk\t18\tAct 3 (N) Good\t2\tAct 3 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Miss A\t9\t51\t1\t\t\t\t\t100\tgld\t18\tAct 4 (N) Equip A\t13\tAct 4 (N) Junk\t18\tAct 4 (N) Good\t2\tAct 4 (N) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Miss B\t9\t54\t1\t\t\t\t\t100\tgld\t18\tAct 4 (N) Equip B\t13\tAct 4 (N) Junk\t18\tAct 4 (N) Good\t2\tAct 4 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Miss A\t9\t57\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip A\t13\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Miss B\t9\t60\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip B\t13\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Miss C\t9\t62\t1\t\t\t\t\t100\tgld\t18\tAct 5 (N) Equip C\t13\tAct 5 (N) Junk\t18\tAct 5 (N) Good\t2\tAct 5 (N) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Miss A\t9\t63\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip A\t13\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Miss B\t9\t66\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Miss C\t9\t68\t1\t\t\t\t\t100\tgld\t18\tAct 1 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 1 (H) Good\t2\tAct 1 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Miss A\t9\t69\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip A\t13\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Miss B\t9\t71\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Miss C\t9\t72\t1\t\t\t\t\t100\tgld\t18\tAct 2 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 2 (H) Good\t2\tAct 2 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Miss A\t9\t74\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip A\t13\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Miss B\t9\t75\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Miss C\t9\t77\t1\t\t\t\t\t100\tgld\t18\tAct 3 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 3 (H) Good\t2\tAct 3 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Miss A\t9\t78\t1\t\t\t\t\t100\tgld\t18\tAct 4 (H) Equip A\t13\tAct 1 (H) Junk\t18\tAct 4 (H) Good\t2\tAct 4 (H) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Miss B\t9\t80\t1\t\t\t\t\t100\tgld\t18\tAct 4 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 4 (H) Good\t2\tAct 4 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Miss A\t9\t81\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip A\t13\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Bow A\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Miss B\t9\t83\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip B\t13\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Miss C\t9\t85\t1\t\t\t\t\t100\tgld\t18\tAct 5 (H) Equip C\t13\tAct 1 (H) Junk\t18\tAct 5 (H) Good\t2\tAct 5 (H) Bow B\t6\tAmmo\t3\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Wraith A\t10\t0\t1\t\t\t\t\t75\tAct 1 Good\t4\tAct 1 Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Wraith B\t10\t5\t1\t\t\t\t\t75\tAct 1 Good\t4\tAct 1 Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Wraith C\t10\t9\t1\t\t\t\t\t75\tAct 1 Good\t4\tAct 1 Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Wraith A\t10\t12\t1\t\t\t\t\t75\tAct 2 Good\t4\tAct 2 Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Wraith B\t10\t15\t1\t\t\t\t\t75\tAct 2 Good\t4\tAct 2 Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Wraith C\t10\t18\t1\t\t\t\t\t75\tAct 3 Good\t4\tAct 2 Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Wraith A\t10\t20\t1\t\t\t\t\t75\tAct 3 Good\t4\tAct 3 Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Wraith B\t10\t22\t1\t\t\t\t\t75\tAct 3 Good\t4\tAct 3 Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Wraith C\t10\t24\t1\t\t\t\t\t75\tAct 3 Good\t4\tAct 3 Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Wraith A\t10\t26\t1\t\t\t\t\t75\tAct 4 Good\t4\tAct 4 Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Wraith B\t10\t29\t1\t\t\t\t\t75\tAct 4 Good\t4\tAct 4 Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Wraith A\t10\t32\t1\t\t\t\t\t75\tAct 5 Good\t4\tAct 5 Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Wraith B\t10\t34\t1\t\t\t\t\t75\tAct 5 Good\t4\tAct 5 Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Wraith C\t10\t36\t1\t\t\t\t\t75\tAct 5 Good\t4\tAct 5 Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Wraith A\t10\t38\t1\t\t\t\t\t75\tAct 1 (N) Good\t4\tAct 1 (N) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Wraith B\t10\t40\t1\t\t\t\t\t75\tAct 1 (N) Good\t4\tAct 1 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Wraith C\t10\t41\t1\t\t\t\t\t75\tAct 1 (N) Good\t4\tAct 1 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Wraith A\t10\t42\t1\t\t\t\t\t75\tAct 2 (N) Good\t4\tAct 2 (N) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Wraith B\t10\t44\t1\t\t\t\t\t75\tAct 2 (N) Good\t4\tAct 2 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Wraith C\t10\t45\t1\t\t\t\t\t75\tAct 2 (N) Good\t4\tAct 2 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Wraith A\t10\t46\t1\t\t\t\t\t75\tAct 3 (N) Good\t4\tAct 3 (N) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Wraith B\t10\t48\t1\t\t\t\t\t75\tAct 3 (N) Good\t4\tAct 3 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Wraith C\t10\t50\t1\t\t\t\t\t75\tAct 3 (N) Good\t4\tAct 3 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Wraith A\t10\t51\t1\t\t\t\t\t75\tAct 4 (N) Good\t4\tAct 4 (N) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Wraith B\t10\t54\t1\t\t\t\t\t75\tAct 4 (N) Good\t4\tAct 4 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Wraith A\t10\t57\t1\t\t\t\t\t75\tAct 5 (N) Good\t4\tAct 5 (N) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Wraith B\t10\t60\t1\t\t\t\t\t75\tAct 5 (N) Good\t4\tAct 5 (N) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Wraith C\t10\t62\t1\t\t\t\t\t75\tAct 5 (N) Good\t4\tAct 5 (N) Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Wraith A\t10\t63\t1\t\t\t\t\t75\tAct 1 (H) Good\t4\tAct 1 (H) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Wraith B\t10\t66\t1\t\t\t\t\t75\tAct 1 (H) Good\t4\tAct 1 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Wraith C\t10\t68\t1\t\t\t\t\t75\tAct 1 (H) Good\t4\tAct 1 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Wraith A\t10\t69\t1\t\t\t\t\t75\tAct 2 (H) Good\t4\tAct 2 (H) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Wraith B\t10\t71\t1\t\t\t\t\t75\tAct 2 (H) Good\t4\tAct 2 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Wraith C\t10\t72\t1\t\t\t\t\t75\tAct 2 (H) Good\t4\tAct 2 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Wraith A\t10\t74\t1\t\t\t\t\t75\tAct 3 (H) Good\t4\tAct 3 (H) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Wraith B\t10\t75\t1\t\t\t\t\t75\tAct 3 (H) Good\t4\tAct 3 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Wraith C\t10\t77\t1\t\t\t\t\t75\tAct 3 (H) Good\t4\tAct 3 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Wraith A\t10\t78\t1\t\t\t\t\t75\tAct 4 (H) Good\t4\tAct 4 (H) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Wraith B\t10\t80\t1\t\t\t\t\t75\tAct 4 (H) Good\t4\tAct 4 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Wraith A\t10\t81\t1\t\t\t\t\t75\tAct 5 (H) Good\t4\tAct 5 (H) Magic A\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Wraith B\t10\t83\t1\t\t\t\t\t75\tAct 5 (H) Good\t4\tAct 5 (H) Magic B\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Wraith C\t10\t85\t1\t\t\t\t\t75\tAct 5 (H) Good\t4\tAct 5 (H) Magic C\t25\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Citem A\t11\t0\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 Equip A\t37\tAct 1 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Citem B\t11\t5\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 Equip B\t37\tAct 1 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Citem C\t11\t9\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 Equip C\t37\tAct 1 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Citem A\t11\t12\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 Equip A\t37\tAct 2 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Citem B\t11\t15\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 Equip B\t37\tAct 2 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Citem C\t11\t18\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 Equip C\t37\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Citem A\t11\t20\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 Equip A\t37\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Citem B\t11\t22\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 Equip B\t37\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Citem C\t11\t24\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 Equip C\t37\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Citem A\t11\t26\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 Equip A\t37\tAct 4 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Citem B\t11\t29\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 Equip B\t37\tAct 4 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Citem A\t11\t32\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 Equip A\t37\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Citem B\t11\t34\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 Equip B\t37\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Citem C\t11\t36\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 Equip C\t37\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Citem A\t11\t38\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (N) Equip A\t37\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Citem B\t11\t40\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (N) Equip B\t37\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Citem C\t11\t41\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (N) Equip B\t37\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Citem A\t11\t42\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (N) Equip A\t37\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Citem B\t11\t44\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (N) Equip B\t37\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Citem C\t11\t45\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (N) Equip B\t37\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Citem A\t11\t46\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (N) Equip A\t37\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Citem B\t11\t48\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (N) Equip B\t37\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Citem C\t11\t50\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (N) Equip B\t37\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Citem A\t11\t51\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 (N) Equip A\t37\tAct 4 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Citem B\t11\t54\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 (N) Equip B\t37\tAct 4 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Citem A\t11\t57\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (N) Equip A\t37\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Citem B\t11\t60\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (N) Equip B\t37\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Citem C\t11\t62\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (N) Equip C\t37\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Citem A\t11\t63\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (H) Equip A\t37\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Citem B\t11\t66\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (H) Equip B\t37\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Citem C\t11\t68\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 1 (H) Equip B\t37\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Citem A\t11\t69\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (H) Equip A\t37\tAct 2 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Citem B\t11\t71\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (H) Equip B\t37\tAct 2 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Citem C\t11\t72\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 2 (H) Equip B\t37\tAct 2 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Citem A\t11\t74\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (H) Equip A\t37\tAct 3 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Citem B\t11\t75\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (H) Equip B\t37\tAct 3 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Citem C\t11\t77\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 3 (H) Equip B\t37\tAct 3 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Citem A\t11\t78\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 (H) Equip A\t37\tAct 4 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Citem B\t11\t80\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 4 (H) Equip B\t37\tAct 4 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Citem A\t11\t81\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (H) Equip A\t37\tAct 5 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Citem B\t11\t83\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (H) Equip B\t37\tAct 5 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Citem C\t11\t85\t1\t800\t800\t800\t1024\t0\t\"gld,mul=1280\"\t60\tAct 5 (H) Equip C\t37\tAct 5 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cpot A\t12\t0\t2\t\t\t\t\t0\tHpotion 1\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cpot B\t12\t5\t2\t\t\t\t\t0\tHpotion 1\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Cpot C\t12\t9\t2\t\t\t\t\t0\tHpotion 1\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cpot A\t12\t12\t2\t\t\t\t\t0\tHpotion 2\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cpot B\t12\t15\t2\t\t\t\t\t0\tHpotion 2\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Cpot C\t12\t18\t2\t\t\t\t\t0\tHpotion 2\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cpot A\t12\t20\t2\t\t\t\t\t0\tHpotion 3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cpot B\t12\t22\t2\t\t\t\t\t0\tHpotion 3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Cpot C\t12\t24\t2\t\t\t\t\t0\tHpotion 3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Cpot A\t12\t26\t2\t\t\t\t\t0\tHpotion 3\t1\tHpotion 4\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Cpot B\t12\t29\t2\t\t\t\t\t0\tHpotion 3\t1\tHpotion 4\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cpot A\t12\t32\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cpot B\t12\t34\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Cpot C\t12\t36\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cpot A\t12\t38\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cpot B\t12\t40\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Cpot C\t12\t41\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cpot A\t12\t42\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cpot B\t12\t44\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Cpot C\t12\t45\t2\t\t\t\t\t0\tHpotion 4\t1\tHpotion 5\t2\tHpotion 6\t4\t\t\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cpot A\t12\t46\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cpot B\t12\t48\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Cpot C\t12\t50\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Cpot A\t12\t51\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Cpot B\t12\t54\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cpot A\t12\t57\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cpot B\t12\t60\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Cpot C\t12\t62\t2\t\t\t\t\t0\trvs\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cpot A\t12\t63\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cpot B\t12\t66\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Cpot C\t12\t68\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cpot A\t12\t69\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cpot B\t12\t71\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Cpot C\t12\t72\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cpot A\t12\t74\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cpot B\t12\t75\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Cpot C\t12\t77\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Cpot A\t12\t78\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Cpot B\t12\t80\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cpot A\t12\t81\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cpot B\t12\t83\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Cpot C\t12\t85\t2\t\t\t\t\t0\trvl\t1\tHpotion 4\t2\tHpotion 5\t4\tHpotion 6\t8\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Champ A\t13\t0\t-2\t\t\t\t\t0\tAct 1 Citem A\t1\tAct 1 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Champ B\t13\t5\t-2\t\t\t\t\t0\tAct 1 Citem B\t1\tAct 1 Cpot B\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Champ C\t13\t9\t-2\t\t\t\t\t0\tAct 1 Citem C\t1\tAct 1 Cpot C\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Champ A\t13\t12\t-2\t\t\t\t\t0\tAct 2 Citem A\t1\tAct 2 Cpot A\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Champ B\t13\t15\t-2\t\t\t\t\t0\tAct 2 Citem B\t1\tAct 2 Cpot B\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Champ C\t13\t18\t-2\t\t\t\t\t0\tAct 2 Citem C\t1\tAct 2 Cpot C\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Champ A\t13\t20\t-2\t\t\t\t\t0\tAct 3 Citem A\t1\tAct 3 Cpot A\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Champ B\t13\t22\t-2\t\t\t\t\t0\tAct 3 Citem B\t1\tAct 3 Cpot B\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Champ C\t13\t24\t-2\t\t\t\t\t0\tAct 3 Citem C\t1\tAct 3 Cpot C\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Champ A\t13\t26\t-2\t\t\t\t\t0\tAct 4 Citem A\t1\tAct 4 Cpot A\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Champ B\t13\t29\t-2\t\t\t\t\t0\tAct 4 Citem B\t1\tAct 4 Cpot B\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Champ A\t13\t32\t-2\t\t\t\t\t0\tAct 5 Citem A\t1\tAct 5 Cpot A\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Champ B\t13\t34\t-2\t\t\t\t\t0\tAct 5 Citem B\t1\tAct 5 Cpot B\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Champ C\t13\t36\t-2\t\t\t\t\t0\tAct 5 Citem C\t1\tAct 5 Cpot C\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Champ A\t13\t38\t-2\t\t\t\t\t0\tAct 1 (N) Citem A\t1\tAct 1 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Champ B\t13\t40\t-2\t\t\t\t\t0\tAct 1 (N) Citem B\t1\tAct 1 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Champ C\t13\t41\t-2\t\t\t\t\t0\tAct 1 (N) Citem C\t1\tAct 1 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Champ A\t13\t42\t-2\t\t\t\t\t0\tAct 2 (N) Citem A\t1\tAct 2 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Champ B\t13\t44\t-2\t\t\t\t\t0\tAct 2 (N) Citem B\t1\tAct 2 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Champ C\t13\t45\t-2\t\t\t\t\t0\tAct 2 (N) Citem C\t1\tAct 2 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Champ A\t13\t46\t-2\t\t\t\t\t0\tAct 3 (N) Citem A\t1\tAct 3 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Champ B\t13\t48\t-2\t\t\t\t\t0\tAct 3 (N) Citem B\t1\tAct 3 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Champ C\t13\t50\t-2\t\t\t\t\t0\tAct 3 (N) Citem C\t1\tAct 3 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Champ A\t13\t51\t-2\t\t\t\t\t0\tAct 4 (N) Citem A\t1\tAct 4 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Champ B\t13\t54\t-2\t\t\t\t\t0\tAct 4 (N) Citem B\t1\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Champ C\t13\t56\t-2\t\t\t\t\t0\tAct 4 (N) Citem B\t1\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\nAct 5 (N) Champ A\t13\t57\t-2\t\t\t\t\t0\tAct 5 (N) Citem A\t1\tAct 5 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Champ B\t13\t60\t-2\t\t\t\t\t0\tAct 5 (N) Citem B\t1\tAct 5 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Champ C\t13\t62\t-2\t\t\t\t\t0\tAct 5 (N) Citem C\t1\tAct 5 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\nAct 1 (H) Champ A\t13\t63\t-2\t\t\t\t\t0\tAct 1 (H) Citem A\t1\tAct 1 (H) Cpot A\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Champ B\t13\t66\t-2\t\t\t\t\t0\tAct 1 (H) Citem B\t1\tAct 1 (H) Cpot B\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Champ C\t13\t68\t-2\t\t\t\t\t0\tAct 1 (H) Citem C\t1\tAct 1 (H) Cpot C\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Champ A\t13\t69\t-2\t\t\t\t\t0\tAct 2 (H) Citem A\t1\tAct 2 (H) Cpot A\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Champ B\t13\t71\t-2\t\t\t\t\t0\tAct 2 (H) Citem B\t1\tAct 2 (H) Cpot B\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Champ C\t13\t72\t-2\t\t\t\t\t0\tAct 2 (H) Citem C\t1\tAct 2 (H) Cpot C\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Champ A\t13\t74\t-2\t\t\t\t\t0\tAct 3 (H) Citem A\t1\tAct 3 (H) Cpot A\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Champ B\t13\t75\t-2\t\t\t\t\t0\tAct 3 (H) Citem B\t1\tAct 3 (H) Cpot B\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Champ C\t13\t77\t-2\t\t\t\t\t0\tAct 3 (H) Citem C\t1\tAct 3 (H) Cpot C\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Champ A\t13\t78\t-2\t\t\t\t\t0\tAct 4 (H) Citem A\t1\tAct 4 (H) Cpot A\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Champ B\t13\t80\t-2\t\t\t\t\t0\tAct 4 (H) Citem B\t1\tAct 4 (H) Cpot B\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Champ A\t13\t81\t-2\t\t\t\t\t0\tAct 5 (H) Citem A\t1\tAct 5 (H) Cpot A\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Champ B\t13\t83\t-2\t\t\t\t\t0\tAct 5 (H) Citem B\t1\tAct 5 (H) Cpot B\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Champ C\t13\t85\t-2\t\t\t\t\t0\tAct 5 (H) Citem C\t1\tAct 5 (H) Cpot C\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Uitem A\t14\t0\t1\t800\t800\t800\t1024\t0\tAct 1 Equip A\t58\tAct 1 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Uitem B\t14\t5\t1\t800\t800\t800\t1024\t0\tAct 1 Equip B\t58\tAct 1 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Uitem C\t14\t9\t1\t800\t800\t800\t1024\t0\tAct 1 Equip C\t58\tAct 1 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Uitem A\t14\t12\t1\t800\t800\t800\t1024\t0\tAct 2 Equip A\t58\tAct 2 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Uitem B\t14\t15\t1\t800\t800\t800\t1024\t0\tAct 2 Equip B\t58\tAct 2 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Uitem C\t14\t18\t1\t800\t800\t800\t1024\t0\tAct 2 Equip C\t58\tAct 3 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Uitem A\t14\t20\t1\t800\t800\t800\t1024\t0\tAct 3 Equip A\t58\tAct 3 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Uitem B\t14\t22\t1\t800\t800\t800\t1024\t0\tAct 3 Equip B\t58\tAct 3 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Uitem C\t14\t24\t1\t800\t800\t800\t1024\t0\tAct 3 Equip C\t58\tAct 3 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Uitem A\t14\t26\t1\t800\t800\t800\t1024\t0\tAct 4 Equip A\t58\tAct 4 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Uitem B\t14\t29\t1\t800\t800\t800\t1024\t0\tAct 4 Equip B\t58\tAct 4 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Uitem A\t14\t32\t1\t800\t800\t800\t1024\t0\tAct 5 Equip A\t58\tAct 5 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Uitem B\t14\t34\t1\t800\t800\t800\t1024\t0\tAct 5 Equip B\t58\tAct 5 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Uitem C\t14\t36\t1\t800\t800\t800\t1024\t0\tAct 5 Equip C\t58\tAct 5 Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Uitem A\t14\t38\t1\t800\t800\t800\t1024\t0\tAct 1 (N) Equip A\t58\tAct 1 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Uitem B\t14\t40\t1\t800\t800\t800\t1024\t0\tAct 1 (N) Equip B\t58\tAct 1 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Uitem C\t14\t41\t1\t800\t800\t800\t1024\t0\tAct 1 (N) Equip B\t58\tAct 1 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Uitem A\t14\t42\t1\t800\t800\t800\t1024\t0\tAct 2 (N) Equip A\t58\tAct 2 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Uitem B\t14\t44\t1\t800\t800\t800\t1024\t0\tAct 2 (N) Equip B\t58\tAct 2 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Uitem C\t14\t45\t1\t800\t800\t800\t1024\t0\tAct 2 (N) Equip B\t58\tAct 2 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Uitem A\t14\t46\t1\t800\t800\t800\t1024\t0\tAct 3 (N) Equip A\t58\tAct 3 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Uitem B\t14\t48\t1\t800\t800\t800\t1024\t0\tAct 3 (N) Equip B\t58\tAct 3 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Uitem C\t14\t50\t1\t800\t800\t800\t1024\t0\tAct 3 (N) Equip B\t58\tAct 3 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Uitem A\t14\t51\t1\t800\t800\t800\t1024\t0\tAct 4 (N) Equip A\t58\tAct 4 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Uitem B\t14\t54\t1\t800\t800\t800\t1024\t0\tAct 4 (N) Equip B\t58\tAct 4 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Uitem A\t14\t57\t1\t800\t800\t800\t1024\t0\tAct 5 (N) Equip A\t58\tAct 5 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Uitem B\t14\t60\t1\t800\t800\t800\t1024\t0\tAct 5 (N) Equip B\t58\tAct 5 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Uitem C\t14\t62\t1\t800\t800\t800\t1024\t0\tAct 5 (N) Equip C\t58\tAct 5 (N) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Uitem A\t14\t63\t1\t800\t800\t800\t1024\t0\tAct 1 (H) Equip A\t58\tAct 1 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Uitem B\t14\t66\t1\t800\t800\t800\t1024\t0\tAct 1 (H) Equip B\t58\tAct 1 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Uitem C\t14\t68\t1\t800\t800\t800\t1024\t0\tAct 1 (H) Equip B\t58\tAct 1 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Uitem A\t14\t69\t1\t800\t800\t800\t1024\t0\tAct 2 (H) Equip A\t58\tAct 2 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Uitem B\t14\t71\t1\t800\t800\t800\t1024\t0\tAct 2 (H) Equip B\t58\tAct 2 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Uitem C\t14\t72\t1\t800\t800\t800\t1024\t0\tAct 2 (H) Equip B\t58\tAct 2 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Uitem A\t14\t74\t1\t800\t800\t800\t1024\t0\tAct 3 (H) Equip A\t58\tAct 3 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Uitem B\t14\t75\t1\t800\t800\t800\t1024\t0\tAct 3 (H) Equip B\t58\tAct 3 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Uitem C\t14\t77\t1\t800\t800\t800\t1024\t0\tAct 3 (H) Equip B\t58\tAct 3 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Uitem A\t14\t78\t1\t800\t800\t800\t1024\t0\tAct 4 (H) Equip A\t58\tAct 4 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Uitem B\t14\t80\t1\t800\t800\t800\t1024\t0\tAct 4 (H) Equip B\t58\tAct 4 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Uitem A\t14\t81\t1\t800\t800\t800\t1024\t0\tAct 5 (H) Equip A\t58\tAct 5 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Uitem B\t14\t83\t1\t800\t800\t800\t1024\t0\tAct 5 (H) Equip B\t58\tAct 5 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Uitem C\t14\t85\t1\t800\t800\t800\t1024\t0\tAct 5 (H) Equip C\t58\tAct 5 (H) Good\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Unique A\t15\t0\t-3\t\t\t\t\t0\tAct 1 Uitem A\t1\tAct 1 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Unique B\t15\t5\t-3\t\t\t\t\t0\tAct 1 Uitem B\t1\tAct 1 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Unique C\t15\t9\t-3\t\t\t\t\t0\tAct 1 Uitem C\t1\tAct 1 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Unique A\t15\t12\t-3\t\t\t\t\t0\tAct 2 Uitem A\t1\tAct 2 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Unique B\t15\t15\t-3\t\t\t\t\t0\tAct 2 Uitem B\t1\tAct 2 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Unique C\t15\t18\t-3\t\t\t\t\t0\tAct 2 Uitem C\t1\tAct 2 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Unique A\t15\t20\t-3\t\t\t\t\t0\tAct 3 Uitem A\t1\tAct 3 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Unique B\t15\t22\t-3\t\t\t\t\t0\tAct 3 Uitem B\t1\tAct 3 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Unique C\t15\t24\t-3\t\t\t\t\t0\tAct 3 Uitem C\t1\tAct 3 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Unique A\t15\t26\t-3\t\t\t\t\t0\tAct 4 Uitem A\t1\tAct 4 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Unique B\t15\t29\t-3\t\t\t\t\t0\tAct 4 Uitem B\t1\tAct 4 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Unique A\t15\t32\t-3\t\t\t\t\t0\tAct 5 Uitem A\t1\tAct 5 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Unique B\t15\t34\t-3\t\t\t\t\t0\tAct 5 Uitem B\t1\tAct 5 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Unique C\t15\t36\t-3\t\t\t\t\t0\tAct 5 Uitem C\t1\tAct 5 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Unique A\t15\t38\t-3\t\t\t\t\t0\tAct 1 (N) Uitem A\t1\tAct 1 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Unique B\t15\t40\t-3\t\t\t\t\t0\tAct 1 (N) Uitem B\t1\tAct 1 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Unique C\t15\t41\t-3\t\t\t\t\t0\tAct 1 (N) Uitem C\t1\tAct 1 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Unique A\t15\t42\t-3\t\t\t\t\t0\tAct 2 (N) Uitem A\t1\tAct 2 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Unique B\t15\t44\t-3\t\t\t\t\t0\tAct 2 (N) Uitem B\t1\tAct 2 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Unique C\t15\t45\t-3\t\t\t\t\t0\tAct 2 (N) Uitem C\t1\tAct 2 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Unique A\t15\t46\t-3\t\t\t\t\t0\tAct 3 (N) Uitem A\t1\tAct 3 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Unique B\t15\t48\t-3\t\t\t\t\t0\tAct 3 (N) Uitem B\t1\tAct 3 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Unique C\t15\t50\t-3\t\t\t\t\t0\tAct 3 (N) Uitem C\t1\tAct 3 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Unique A\t15\t51\t-3\t\t\t\t\t0\tAct 4 (N) Uitem A\t1\tAct 4 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Unique B\t15\t54\t-3\t\t\t\t\t0\tAct 4 (N) Uitem B\t1\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Unique A\t15\t57\t-3\t\t\t\t\t0\tAct 5 (N) Uitem A\t1\tAct 5 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Unique B\t15\t60\t-3\t\t\t\t\t0\tAct 5 (N) Uitem B\t1\tAct 5 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Unique C\t15\t62\t-3\t\t\t\t\t0\tAct 5 (N) Uitem C\t1\tAct 5 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Unique A\t15\t63\t-3\t\t\t\t\t0\tAct 1 (H) Uitem A\t1\tAct 1 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Unique B\t15\t66\t-3\t\t\t\t\t0\tAct 1 (H) Uitem B\t1\tAct 1 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Unique C\t15\t68\t-3\t\t\t\t\t0\tAct 1 (H) Uitem C\t1\tAct 1 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Unique A\t15\t69\t-3\t\t\t\t\t0\tAct 2 (H) Uitem A\t1\tAct 2 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Unique B\t15\t71\t-3\t\t\t\t\t0\tAct 2 (H) Uitem B\t1\tAct 2 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Unique C\t15\t72\t-3\t\t\t\t\t0\tAct 2 (H) Uitem C\t1\tAct 2 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Unique A\t15\t74\t-3\t\t\t\t\t0\tAct 3 (H) Uitem A\t1\tAct 3 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Unique B\t15\t75\t-3\t\t\t\t\t0\tAct 3 (H) Uitem B\t1\tAct 3 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Unique C\t15\t77\t-3\t\t\t\t\t0\tAct 3 (H) Uitem C\t1\tAct 3 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Unique A\t15\t78\t-3\t\t\t\t\t0\tAct 4 (H) Uitem A\t1\tAct 4 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Unique B\t15\t80\t-3\t\t\t\t\t0\tAct 4 (H) Uitem B\t1\tAct 4 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Unique A\t15\t81\t-3\t\t\t\t\t0\tAct 5 (H) Uitem A\t1\tAct 5 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Unique B\t15\t83\t-3\t\t\t\t\t0\tAct 5 (H) Uitem B\t1\tAct 5 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Unique C\t15\t85\t-3\t\t\t\t\t0\tAct 5 (H) Uitem C\t1\tAct 5 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 1\t16\t0\t1\t\t\t\t\t125\tgld\t19\tAct 1 Junk\t19\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 2\t16\t4\t1\t\t\t\t\t125\tgld\t19\tAct 1 Junk\t19\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 3\t16\t8\t1\t\t\t\t\t125\tgld\t19\tAct 1 Junk\t19\tAct 1 Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 4\t16\t12\t1\t\t\t\t\t125\tgld\t19\tAct 1 Junk\t19\tAct 1 Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 5\t16\t20\t1\t\t\t\t\t125\tgld\t19\tAct 3 Junk\t19\tAct 3 Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 1 (N)\t16\t32\t1\t\t\t\t\t125\tgld\t19\tAct 1 (N) Junk\t19\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 2 (N)\t16\t35\t1\t\t\t\t\t125\tgld\t19\tAct 1 (N) Junk\t19\tAct 1 (N) Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 3 (N)\t16\t38\t1\t\t\t\t\t125\tgld\t19\tAct 1 (N) Junk\t19\tAct 1 (N) Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 4 (N)\t16\t40\t1\t\t\t\t\t125\tgld\t19\tAct 1 (N) Junk\t19\tAct 1 (N) Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 5 (N)\t16\t46\t1\t\t\t\t\t125\tgld\t19\tAct 3 (N) Junk\t19\tAct 3 (N) Good\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 1 (H)\t16\t60\t1\t\t\t\t\t125\tgld\t19\tAct 1 (H) Junk\t19\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 2 (H)\t16\t62\t1\t\t\t\t\t125\tgld\t19\tAct 1 (H) Junk\t19\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 3 (H)\t16\t65\t1\t\t\t\t\t125\tgld\t19\tAct 1 (H) Junk\t19\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 4 (H)\t16\t68\t1\t\t\t\t\t125\tgld\t19\tAct 1 (H) Junk\t19\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nQuill 5 (H)\t16\t85\t1\t\t\t\t\t125\tgld\t19\tAct 3 (H) Junk\t19\tAct 3 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 1\t17\t0\t1\t\t\t\t\t125\tPotion 2\t12\tMisc 1\t6\tAct 2 Good\t1\tAct 2 Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 2\t17\t20\t1\t\t\t\t\t125\tPotion 3\t12\tMisc 2\t6\tAct 3 Good\t1\tAct 3 Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 1 (N)\t17\t40\t1\t\t\t\t\t125\tPotion 6\t12\tMisc 2\t6\tAct 2 (N) Good\t1\tAct 2 (N) Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 2 (N)\t17\t46\t1\t\t\t\t\t125\tPotion 6\t12\tMisc 2\t6\tAct 3 (N) Good\t1\tAct 3 (N) Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 1 (H)\t17\t68\t1\t\t\t\t\t125\tPotion 6\t12\tMisc 2\t6\tAct 2 (H) Good\t1\tAct 2 (H) Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSwarm 2 (H)\t17\t74\t1\t\t\t\t\t125\tPotion 6\t12\tMisc 2\t6\tAct 3 (H) Good\t1\tAct 3 (H) Magic A\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndariel\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=1280\"\t11\tAct 2 Equip A\t19\tAct 2 Junk\t15\tAct 2 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndariel (N)\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=1536\"\t11\tAct 2 (N) Equip A\t19\tAct 2 (N) Junk\t15\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndariel (H)\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=2048\"\t11\tAct 2 (H) Equip A\t19\tAct 2 (H) Junk\t15\tAct 2 (H) Good\t3\ttes\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndarielq\t\t\t7\t995\t995\t1024\t1024\t19\tAct 2 Equip A\t19\tAct 2 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndarielq (N)\t\t\t7\t995\t995\t1024\t1024\t19\tAct 2 (N) Equip A\t19\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAndarielq (H)\t\t\t7\t995\t995\t1024\t1024\t19\tAct 2 (H) Equip A\t19\tAct 2 (H) Good\t3\ttes\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel - Base\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=1280\"\t11\tAct 3 Equip A\t19\tAct 3 Junk\t15\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel (N) - Base\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=1536\"\t11\tAct 3 (N) Equip A\t19\tAct 3 (N) Junk\t15\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel (H) - Base\t\t\t7\t983\t983\t983\t1024\t19\t\"gld,mul=2048\"\t11\tAct 3 (H) Equip A\t19\tAct 3 (H) Junk\t15\tAct 3 (H) Good\t3\ttes\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq - Base\t\t\t7\t993\t993\t1024\t1024\t19\tAct 3 Equip A\t19\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq (N) - Base\t\t\t7\t993\t993\t1024\t1024\t19\tAct 3 (N) Equip A\t19\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq (H) - Base\t\t\t7\t993\t993\t1024\t1024\t19\tAct 3 (H) Equip A\t19\tAct 3 (H) Good\t3\ttes\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRadament\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=1280\"\t11\tAct 3 Equip B\t19\tAct 3 Junk\t15\tAct 3 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRadament (N)\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=1536\"\t11\tAct 3 (N) Equip B\t19\tAct 3 (N) Junk\t15\tAct 3 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nRadament (H)\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=2048\"\t11\tAct 3 (H) Equip C\t19\tAct 3 (H) Junk\t15\tAct 3 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nFlying Scimitar\t\t\t1\t\t\t\t\t100\tAct 2 Good\t3\tscm\t57\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nFlying Scimitar (N)\t\t\t1\t\t\t\t\t100\tAct 2 (N) Good\t3\tscm\t25\t9sm\t32\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nFlying Scimitar (H)\t\t\t1\t\t\t\t\t100\tAct 2 (H) Good\t3\tscm\t7\t9sm\t18\t7sm\t32\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephisto\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1280\"\t5\tAct 4 Equip A\t52\tAct 4 Junk\t5\tAct 4 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephisto (N)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1536\"\t5\tAct 4 (N) Equip A\t52\tAct 4 (N) Junk\t5\tAct 4 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephisto (H)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=2048\"\t5\tAct 4 (H) Equip A\t52\tAct 4 (H) Junk\t5\tAct 4 (H) Good\t3\tceh\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephistoq\t\t\t7\t993\t993\t1024\t1024\t15\tAct 4 Equip A\t52\tAct 4 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephistoq (N)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 4 (N) Equip A\t52\tAct 4 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nMephistoq (H)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 4 (H) Equip A\t52\tAct 4 (H) Good\t3\tceh\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiablo\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1280\"\t5\tAct 5 Equip A\t52\tAct 5 Junk\t5\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiablo (N)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1536\"\t5\tAct 5 (N) Equip A\t52\tAct 5 (N) Junk\t5\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiablo (H)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=2048\"\t5\tAct 5 (H) Equip A\t52\tAct 5 (H) Junk\t5\tAct 5 (H) Good\t3\tbet\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiabloq\t\t\t7\t993\t993\t1024\t1024\t15\tAct 5 Equip A\t52\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiabloq (N)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 5 (N) Equip A\t52\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDiabloq (H)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 5 (H) Equip A\t52\tAct 5 (H) Good\t3\tbet\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSummoner\t\t\t5\t900\t900\t972\t1024\t19\t\"gld,mul=1280\"\t9\tAct 2 Equip C\t15\tAct 3 Junk\t5\tAct 2 Good\t3\tAct 3 Magic A\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSummoner (N)\t\t\t5\t900\t900\t972\t1024\t19\t\"gld,mul=1536\"\t9\tAct 2 (N) Equip C\t15\tAct 3 (N) Junk\t5\tAct 2 (N) Good\t3\tAct 3 (N) Magic A\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSummoner (H)\t\t\t5\t900\t900\t972\t1024\t19\t\"gld,mul=2048\"\t9\tAct 2 (H) Equip C\t15\tAct 3 (H) Junk\t5\tAct 2 (H) Good\t3\tAct 3 (H) Magic A\t4\tpk2\t1\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCouncil\t\t\t3\t650\t800\t800\t1024\t19\t\"gld,mul=1280\"\t9\tAct 4 Equip A\t15\tAct 4 Junk\t5\tAct 4 Good\t3\tAct 4 Magic A\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCouncil (N)\t\t\t3\t650\t800\t800\t1024\t19\t\"gld,mul=1536\"\t9\tAct 4 (N) Equip A\t15\tAct 4 (N) Junk\t5\tAct 4 (N) Good\t3\tAct 4 (N) Magic A\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCouncil (H)\t\t\t3\t650\t800\t800\t1024\t19\t\"gld,mul=2048\"\t9\tAct 4 (H) Equip A\t15\tAct 4 (H) Junk\t5\tAct 4 (H) Good\t3\tAct 4 (H) Magic A\t4\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nGriswold\t\t\t-3\t\t\t\t\t0\tAct 1 Uitem C\t1\tAct 1 Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nGriswold (N)\t\t\t-3\t\t\t\t\t0\tAct 1 (H) Uitem C\t1\tAct 1 (N) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nGriswold (H)\t\t\t-3\t\t\t\t\t0\tAct 1 (H) Uitem C\t1\tAct 1 (H) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 5 Equip A\t19\tAct 5 Junk\t19\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow (N)\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 5 (N) Equip A\t19\tAct 5 (N) Junk\t19\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow (H)\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 5 (H) Equip B\t19\tAct 5 (H) Junk\t19\tAct 5 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nTrapped Soul\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 4 Equip A\t8\tAct 4 Junk\t33\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nTrapped Soul (N)\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 4 (N) Equip A\t8\tAct 4 (N) Junk\t33\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nTrapped Soul (H)\t\t\t1\t\t\t\t\t100\tgld\t19\tAct 4 (H) Equip A\t8\tAct 4 (H) Junk\t33\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHaphesto\t\t\t5\t800\t800\t900\t1024\t19\t\"gld,mul=1280\"\t14\tAct 5 Equip A\t19\tAct 5 Junk\t5\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHaphesto (N)\t\t\t5\t800\t800\t900\t1024\t19\t\"gld,mul=1536\"\t14\tAct 5 (N) Equip A\t19\tAct 5 (N) Junk\t5\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nHaphesto (H)\t\t\t5\t800\t800\t900\t1024\t19\t\"gld,mul=2048\"\t14\tAct 5 (H) Equip A\t19\tAct 5 (H) Junk\t5\tAct 5 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nNihlathak\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=1280\"\t14\tAct 5 Equip B\t19\tAct 5 Junk\t5\tAct 5 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nNihlathak (N)\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=1536\"\t14\tAct 5 (N) Equip B\t19\tAct 5 (N) Junk\t5\tAct 5 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nNihlathak (H)\t\t\t5\t900\t900\t900\t1024\t19\t\"gld,mul=2048\"\t14\tAct 5 (H) Equip B\t19\tAct 5 (H) Junk\t5\tAct 5 (H) Good\t3\tpk3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaal\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1280\"\t5\tAct 1 (N) Equip A\t52\tAct 1 (N) Junk\t5\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaal (N)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=1536\"\t5\tAct 1 (H) Equip A\t52\tAct 1 (H) Junk\t5\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaal (H)\t\t\t7\t983\t983\t983\t1024\t15\t\"gld,mul=2048\"\t5\tAct 5 (H) Equip B\t52\tAct 5 (H) Junk\t5\tAct 5 (H) Good\t3\tfed\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaalq\t\t\t7\t993\t993\t1024\t1024\t15\tAct 1 (N) Equip A\t52\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaalq (N)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 1 (H) Equip A\t52\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBaalq (H)\t\t\t7\t993\t993\t1024\t1024\t15\tAct 5 (H) Equip B\t52\tAct 5 (H) Good\t3\tfed\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBlood Raven\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=1280\"\t14\tAct 1 Equip B\t19\tAct 1 Junk\t5\tAct 1 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBlood Raven (N)\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=1536\"\t14\tAct 1 (N) Equip B\t19\tAct 1 (N) Junk\t5\tAct 1 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nBlood Raven (H)\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=2048\"\t14\tAct 1 (H) Equip B\t19\tAct 1 (H) Junk\t5\tAct 1 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSmith\t\t\t-3\t\t\t\t\t0\tAct 1 Uitem C\t1\tAct 1 Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSmith (N)\t\t\t-3\t\t\t\t\t0\tAct 1 (H) Uitem C\t1\tAct 1 (N) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nSmith (H)\t\t\t-3\t\t\t\t\t0\tAct 1 (H) Uitem C\t1\tAct 1 (H) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nIzual\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=1280\"\t14\tAct 4 Equip B\t19\tAct 4 Junk\t5\tAct 4 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nIzual (N)\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=1536\"\t14\tAct 4 (N) Equip B\t19\tAct 4 (N) Junk\t5\tAct 4 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nIzual (H)\t\t\t5\t800\t800\t972\t1024\t19\t\"gld,mul=2048\"\t14\tAct 4 (H) Equip B\t19\tAct 4 (H) Junk\t5\tAct 4 (H) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super A\t18\t0\t-4\t800\t800\t972\t1024\t0\tAct 1 Uitem A\t2\tAct 1 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super B\t18\t5\t-4\t800\t800\t972\t1024\t0\tAct 1 Uitem B\t2\tAct 1 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super C\t18\t9\t-4\t800\t800\t972\t1024\t0\tAct 1 Uitem C\t2\tAct 1 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super A\t18\t12\t-4\t800\t800\t972\t1024\t0\tAct 2 Uitem A\t2\tAct 2 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super B\t18\t15\t-4\t800\t800\t972\t1024\t0\tAct 2 Uitem B\t2\tAct 2 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super C\t18\t18\t-4\t800\t800\t972\t1024\t0\tAct 2 Uitem C\t2\tAct 2 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super A\t18\t20\t-4\t800\t800\t972\t1024\t0\tAct 3 Uitem A\t2\tAct 3 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super B\t18\t22\t-4\t800\t800\t972\t1024\t0\tAct 3 Uitem B\t2\tAct 3 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super C\t18\t24\t-4\t800\t800\t972\t1024\t0\tAct 3 Uitem C\t2\tAct 3 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super A\t18\t26\t-4\t800\t800\t972\t1024\t0\tAct 4 Uitem A\t2\tAct 4 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super B\t18\t29\t-4\t800\t800\t972\t1024\t0\tAct 4 Uitem B\t2\tAct 4 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super C\t18\t32\t-4\t800\t800\t972\t1024\t0\tAct 4 Uitem B\t2\tAct 4 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super A\t18\t34\t-4\t800\t800\t972\t1024\t0\tAct 5 Uitem A\t2\tAct 5 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super B\t18\t36\t-4\t800\t800\t972\t1024\t0\tAct 5 Uitem B\t2\tAct 5 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super C\t18\t38\t-4\t800\t800\t972\t1024\t0\tAct 5 Uitem C\t2\tAct 5 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super A\t18\t40\t-4\t800\t800\t972\t1024\t0\tAct 1 (N) Uitem A\t2\tAct 1 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super B\t18\t41\t-4\t800\t800\t972\t1024\t0\tAct 1 (N) Uitem B\t2\tAct 1 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super C\t18\t42\t-4\t800\t800\t972\t1024\t0\tAct 1 (N) Uitem C\t2\tAct 1 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super A\t18\t44\t-4\t800\t800\t972\t1024\t0\tAct 2 (N) Uitem A\t2\tAct 2 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super B\t18\t45\t-4\t800\t800\t972\t1024\t0\tAct 2 (N) Uitem B\t2\tAct 2 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super C\t18\t46\t-4\t800\t800\t972\t1024\t0\tAct 2 (N) Uitem C\t2\tAct 2 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super A\t18\t48\t-4\t800\t800\t972\t1024\t0\tAct 3 (N) Uitem A\t2\tAct 3 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super B\t18\t50\t-4\t800\t800\t972\t1024\t0\tAct 3 (N) Uitem B\t2\tAct 3 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super C\t18\t51\t-4\t800\t800\t972\t1024\t0\tAct 3 (N) Uitem C\t2\tAct 3 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super A\t18\t54\t-4\t800\t800\t972\t1024\t0\tAct 4 (N) Uitem A\t2\tAct 4 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super B\t18\t57\t-4\t800\t800\t972\t1024\t0\tAct 4 (N) Uitem B\t2\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super C\t18\t60\t-4\t800\t800\t972\t1024\t0\tAct 4 (N) Uitem B\t2\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super A\t18\t62\t-4\t800\t800\t972\t1024\t0\tAct 5 (N) Uitem A\t2\tAct 5 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super B\t18\t63\t-4\t800\t800\t972\t1024\t0\tAct 5 (N) Uitem B\t2\tAct 5 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super C\t18\t66\t-4\t800\t800\t972\t1024\t0\tAct 5 (N) Uitem C\t2\tAct 5 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super A\t18\t67\t-4\t800\t800\t972\t1024\t0\tAct 1 (H) Uitem A\t2\tAct 1 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super B\t18\t67\t-4\t800\t800\t972\t1024\t0\tAct 1 (H) Uitem B\t2\tAct 1 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super C\t18\t68\t-4\t800\t800\t972\t1024\t0\tAct 1 (H) Uitem C\t2\tAct 1 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super A\t18\t68\t-4\t800\t800\t972\t1024\t0\tAct 2 (H) Uitem A\t2\tAct 2 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super B\t18\t69\t-4\t800\t800\t972\t1024\t0\tAct 2 (H) Uitem B\t2\tAct 2 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super C\t18\t72\t-4\t800\t800\t972\t1024\t0\tAct 2 (H) Uitem C\t2\tAct 2 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super A\t18\t73\t-4\t800\t800\t972\t1024\t0\tAct 3 (H) Uitem A\t2\tAct 3 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super B\t18\t75\t-4\t800\t800\t972\t1024\t0\tAct 3 (H) Uitem B\t2\tAct 3 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super C\t18\t78\t-4\t800\t800\t972\t1024\t0\tAct 3 (H) Uitem C\t2\tAct 3 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super A\t18\t81\t-4\t800\t800\t972\t1024\t0\tAct 4 (H) Uitem A\t2\tAct 4 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super B\t18\t84\t-4\t800\t800\t972\t1024\t0\tAct 4 (H) Uitem B\t2\tAct 4 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super C\t18\t87\t-4\t800\t800\t972\t1024\t0\tAct 4 (H) Uitem B\t2\tAct 4 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super A\t18\t90\t-4\t800\t800\t972\t1024\t0\tAct 5 (H) Uitem A\t2\tAct 5 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super B\t18\t93\t-4\t800\t800\t972\t1024\t0\tAct 5 (H) Uitem B\t2\tAct 5 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super C\t18\t96\t-4\t800\t800\t972\t1024\t0\tAct 5 (H) Uitem C\t2\tAct 5 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super Ax\t18\t0\t-4\t512\t654\t972\t1024\t0\tAct 1 Uitem A\t2\tAct 1 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super Bx\t18\t5\t-4\t512\t654\t972\t1024\t0\tAct 1 Uitem B\t2\tAct 1 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 Super Cx\t18\t9\t-4\t512\t654\t972\t1024\t0\tAct 1 Uitem C\t2\tAct 1 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super Ax\t18\t12\t-4\t512\t654\t972\t1024\t0\tAct 2 Uitem A\t2\tAct 2 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super Bx\t18\t15\t-4\t512\t654\t972\t1024\t0\tAct 2 Uitem B\t2\tAct 2 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 Super Cx\t18\t18\t-4\t512\t654\t972\t1024\t0\tAct 2 Uitem C\t2\tAct 2 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super Ax\t18\t20\t-4\t512\t654\t972\t1024\t0\tAct 3 Uitem A\t2\tAct 3 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super Bx\t18\t22\t-4\t512\t654\t972\t1024\t0\tAct 3 Uitem B\t2\tAct 3 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 Super Cx\t18\t24\t-4\t512\t654\t972\t1024\t0\tAct 3 Uitem C\t2\tAct 3 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super Ax\t18\t26\t-4\t512\t654\t972\t1024\t0\tAct 4 Uitem A\t2\tAct 4 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super Bx\t18\t29\t-4\t512\t654\t972\t1024\t0\tAct 4 Uitem B\t2\tAct 4 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 Super Cx\t18\t32\t-4\t512\t654\t972\t1024\t0\tAct 4 Uitem B\t2\tAct 4 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super Ax\t18\t34\t-4\t512\t654\t972\t1024\t0\tAct 5 Uitem A\t2\tAct 5 Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super Bx\t18\t36\t-4\t512\t654\t972\t1024\t0\tAct 5 Uitem B\t2\tAct 5 Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 Super Cx\t18\t38\t-4\t512\t654\t972\t1024\t0\tAct 5 Uitem C\t2\tAct 5 Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super Ax\t18\t40\t-4\t512\t654\t972\t1024\t0\tAct 1 (N) Uitem A\t2\tAct 1 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super Bx\t18\t41\t-4\t512\t654\t972\t1024\t0\tAct 1 (N) Uitem B\t2\tAct 1 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (N) Super Cx\t18\t42\t-4\t512\t654\t972\t1024\t0\tAct 1 (N) Uitem C\t2\tAct 1 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super Ax\t18\t44\t-4\t512\t654\t972\t1024\t0\tAct 2 (N) Uitem A\t2\tAct 2 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super Bx\t18\t45\t-4\t512\t654\t972\t1024\t0\tAct 2 (N) Uitem B\t2\tAct 2 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (N) Super Cx\t18\t46\t-4\t512\t654\t972\t1024\t0\tAct 2 (N) Uitem C\t2\tAct 2 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super Ax\t18\t48\t-4\t512\t654\t972\t1024\t0\tAct 3 (N) Uitem A\t2\tAct 3 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super Bx\t18\t50\t-4\t512\t654\t972\t1024\t0\tAct 3 (N) Uitem B\t2\tAct 3 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (N) Super Cx\t18\t51\t-4\t512\t654\t972\t1024\t0\tAct 3 (N) Uitem C\t2\tAct 3 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super Ax\t18\t54\t-4\t512\t654\t972\t1024\t0\tAct 4 (N) Uitem A\t2\tAct 4 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super Bx\t18\t57\t-4\t512\t654\t972\t1024\t0\tAct 4 (N) Uitem B\t2\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (N) Super Cx\t18\t60\t-4\t512\t654\t972\t1024\t0\tAct 4 (N) Uitem B\t2\tAct 4 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super Ax\t18\t62\t-4\t512\t654\t972\t1024\t0\tAct 5 (N) Uitem A\t2\tAct 5 (N) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super Bx\t18\t63\t-4\t512\t654\t972\t1024\t0\tAct 5 (N) Uitem B\t2\tAct 5 (N) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (N) Super Cx\t18\t66\t-4\t512\t654\t972\t1024\t0\tAct 5 (N) Uitem C\t2\tAct 5 (N) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super Ax\t18\t67\t-4\t512\t654\t972\t1024\t0\tAct 1 (H) Uitem A\t2\tAct 1 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super Bx\t18\t67\t-4\t512\t654\t972\t1024\t0\tAct 1 (H) Uitem B\t2\tAct 1 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 1 (H) Super Cx\t18\t68\t-4\t512\t654\t972\t1024\t0\tAct 1 (H) Uitem C\t2\tAct 1 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super Ax\t18\t68\t-4\t512\t654\t972\t1024\t0\tAct 2 (H) Uitem A\t2\tAct 2 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super Bx\t18\t69\t-4\t512\t654\t972\t1024\t0\tAct 2 (H) Uitem B\t2\tAct 2 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 2 (H) Super Cx\t18\t72\t-4\t512\t654\t972\t1024\t0\tAct 2 (H) Uitem C\t2\tAct 2 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super Ax\t18\t73\t-4\t512\t654\t972\t1024\t0\tAct 3 (H) Uitem A\t2\tAct 3 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super Bx\t18\t75\t-4\t512\t654\t972\t1024\t0\tAct 3 (H) Uitem B\t2\tAct 3 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 3 (H) Super Cx\t18\t78\t-4\t512\t654\t972\t1024\t0\tAct 3 (H) Uitem C\t2\tAct 3 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super Ax\t18\t81\t-4\t512\t654\t972\t1024\t0\tAct 4 (H) Uitem A\t2\tAct 4 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super Bx\t18\t84\t-4\t512\t654\t972\t1024\t0\tAct 4 (H) Uitem B\t2\tAct 4 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 4 (H) Super Cx\t18\t87\t-4\t512\t654\t972\t1024\t0\tAct 4 (H) Uitem B\t2\tAct 4 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super Ax\t18\t90\t-4\t512\t654\t972\t1024\t0\tAct 5 (H) Uitem A\t2\tAct 5 (H) Cpot A\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super Bx\t18\t93\t-4\t512\t654\t972\t1024\t0\tAct 5 (H) Uitem B\t2\tAct 5 (H) Cpot B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nAct 5 (H) Super Cx\t18\t96\t-4\t512\t654\t972\t1024\t0\tAct 5 (H) Uitem C\t2\tAct 5 (H) Cpot C\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow King\t\t\t5\t850\t983\t983\t1024\t0\tAct 1 Uitem C\t1\tAct 1 Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow King (N)\t\t\t5\t850\t983\t983\t1024\t0\tAct 1 (H) Uitem C\t1\tAct 1 (N) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCow King (H)\t\t\t5\t850\t983\t983\t1024\t0\tAct 1 (H) Uitem C\t1\tAct 1 (H) Melee B\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel\t\t\t5\t\t\t\t\t0\ttsc\t1\tDuriel - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel (N)\t\t\t5\t\t\t\t\t0\ttsc\t1\tDuriel (N) - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDuriel (H)\t\t\t5\t\t\t\t\t0\ttsc\t1\tDuriel (H) - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq\t\t\t5\t\t\t\t\t0\ttsc\t1\tDurielq - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq (N)\t\t\t5\t\t\t\t\t0\ttsc\t1\tDurielq (N) - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nDurielq (H)\t\t\t5\t\t\t\t\t0\ttsc\t1\tDurielq (H) - Base\t2\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nROP\t\t\t1\t1024\t\t\t\t0\tDiablo\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nROP (N)\t\t\t1\t1024\t\t\t\t0\tDiablo (N)\t4\tAnnihilus\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nROP (H)\t\t\t1\t1024\t\t\t\t0\tAnnihilus\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Rune\t\t\t3\t\t\t\t\t5\tRunes 4\t15\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Rune (N)\t\t\t3\t\t\t\t\t5\tRunes 8\t15\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Rune (H)\t\t\t3\t\t\t\t\t5\tRunes 12\t15\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Item\t\t\t5\t\t\t\t\t19\t\"gld,mul=1280\"\t11\tAct 1 Equip C\t19\tAct 2 Junk\t15\tAct 2 Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Item (N)\t\t\t5\t\t\t\t\t19\t\"gld,mul=1536\"\t11\tAct 1 (N) Equip C\t19\tAct 2 (N) Junk\t15\tAct 2 (N) Good\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess Item (H)\t\t\t5\t\t\t\t\t19\t\"gld,mul=2048\"\t11\tAct 1 (H) Equip C\t19\tAct 2 (H) Junk\t15\tAct 2 (H) Good\t3\tpk1\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess\t\t\t-2\t883\t883\t883\t1024\t0\tCountess Item\t1\tCountess Rune\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess (N)\t\t\t-2\t883\t883\t983\t1024\t0\tCountess Item (N)\t1\tCountess Rune (N)\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nCountess (H)\t\t\t-2\t883\t883\t983\t1024\t0\tCountess Item (H)\t1\tCountess Rune (H)\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nUber Andariel\t\t\t1\t1024\t\t\t\t0\tdhn\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nUber Duriel\t\t\t1\t1024\t\t\t\t0\tbey\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nUber Izual\t\t\t1\t1024\t\t\t\t0\tmbr\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nPandemonium Key A\t\t\t1\t1024\t\t\t\t0\tpk1\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nPandemonium Key B\t\t\t1\t1024\t\t\t\t0\tpk2\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\nPandemonium Key C\t\t\t1\t1024\t\t\t\t0\tpk3\t1\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\r\n";
|
||
|
||
export const CANONICAL_AUTO_TCS_DATA: readonly {
|
||
readonly name: string;
|
||
readonly level: number;
|
||
readonly picks: number;
|
||
readonly totalProb: number;
|
||
readonly entries: readonly { readonly itemCode: string; readonly prob: number }[];
|
||
}[] = [{"name":"weap3","level":3,"picks":1,"totalProb":26,"entries":[{"itemCode":"hax","prob":3},{"itemCode":"wnd","prob":1},{"itemCode":"clb","prob":1},{"itemCode":"scp","prob":2},{"itemCode":"ssd","prob":3},{"itemCode":"dgr","prob":2},{"itemCode":"tkf","prob":2},{"itemCode":"jav","prob":4},{"itemCode":"sst","prob":2},{"itemCode":"sbw","prob":2},{"itemCode":"ktr","prob":2},{"itemCode":"ob1","prob":2}]},{"name":"weap6","level":6,"picks":1,"totalProb":22,"entries":[{"itemCode":"lax","prob":4},{"itemCode":"spc","prob":3},{"itemCode":"scm","prob":3},{"itemCode":"spr","prob":4},{"itemCode":"bar","prob":4},{"itemCode":"hbw","prob":2},{"itemCode":"lxb","prob":2}]},{"name":"weap9","level":9,"picks":1,"totalProb":28,"entries":[{"itemCode":"axe","prob":4},{"itemCode":"mac","prob":4},{"itemCode":"sbr","prob":3},{"itemCode":"dir","prob":2},{"itemCode":"tax","prob":2},{"itemCode":"tri","prob":4},{"itemCode":"lst","prob":2},{"itemCode":"lbw","prob":2},{"itemCode":"wrb","prob":2},{"itemCode":"ob2","prob":3}]},{"name":"weap12","level":12,"picks":1,"totalProb":32,"entries":[{"itemCode":"bax","prob":4},{"itemCode":"ywn","prob":1},{"itemCode":"flc","prob":4},{"itemCode":"crs","prob":2},{"itemCode":"2hs","prob":4},{"itemCode":"pil","prob":4},{"itemCode":"vou","prob":4},{"itemCode":"cst","prob":2},{"itemCode":"cbw","prob":2},{"itemCode":"axf","prob":2},{"itemCode":"ob3","prob":3}]},{"name":"weap15","level":15,"picks":1,"totalProb":30,"entries":[{"itemCode":"2ax","prob":4},{"itemCode":"gsc","prob":4},{"itemCode":"mst","prob":4},{"itemCode":"bsd","prob":4},{"itemCode":"bkf","prob":2},{"itemCode":"ssp","prob":4},{"itemCode":"scy","prob":4},{"itemCode":"mxb","prob":2},{"itemCode":"ces","prob":2}]},{"name":"weap18","level":18,"picks":1,"totalProb":33,"entries":[{"itemCode":"btx","prob":4},{"itemCode":"bwn","prob":1},{"itemCode":"clm","prob":4},{"itemCode":"kri","prob":2},{"itemCode":"bal","prob":2},{"itemCode":"brn","prob":4},{"itemCode":"bst","prob":2},{"itemCode":"sbb","prob":2},{"itemCode":"clw","prob":2},{"itemCode":"ob4","prob":4},{"itemCode":"am1","prob":3},{"itemCode":"am3","prob":3}]},{"name":"weap21","level":21,"picks":1,"totalProb":34,"entries":[{"itemCode":"mpi","prob":4},{"itemCode":"wsp","prob":4},{"itemCode":"fla","prob":4},{"itemCode":"mau","prob":4},{"itemCode":"lsd","prob":4},{"itemCode":"gis","prob":4},{"itemCode":"spt","prob":4},{"itemCode":"pax","prob":4},{"itemCode":"btl","prob":2}]},{"name":"weap24","level":24,"picks":1,"totalProb":35,"entries":[{"itemCode":"gax","prob":4},{"itemCode":"bsw","prob":4},{"itemCode":"bld","prob":3},{"itemCode":"glv","prob":4},{"itemCode":"pik","prob":4},{"itemCode":"wst","prob":2},{"itemCode":"lbb","prob":2},{"itemCode":"hxb","prob":2},{"itemCode":"skr","prob":2},{"itemCode":"ob5","prob":5},{"itemCode":"am5","prob":3}]},{"name":"weap27","level":27,"picks":1,"totalProb":29,"entries":[{"itemCode":"wax","prob":4},{"itemCode":"gix","prob":4},{"itemCode":"gwn","prob":1},{"itemCode":"whm","prob":4},{"itemCode":"wsd","prob":4},{"itemCode":"flb","prob":4},{"itemCode":"swb","prob":2},{"itemCode":"am2","prob":3},{"itemCode":"am4","prob":3}]},{"name":"weap30","level":30,"picks":1,"totalProb":22,"entries":[{"itemCode":"tsp","prob":4},{"itemCode":"hal","prob":4},{"itemCode":"9cl","prob":1},{"itemCode":"9ss","prob":3},{"itemCode":"9ja","prob":4},{"itemCode":"8ss","prob":2},{"itemCode":"8sb","prob":2},{"itemCode":"9ar","prob":2}]},{"name":"weap33","level":33,"picks":1,"totalProb":38,"entries":[{"itemCode":"gma","prob":3},{"itemCode":"gsd","prob":4},{"itemCode":"lwb","prob":2},{"itemCode":"rxb","prob":2},{"itemCode":"9ha","prob":3},{"itemCode":"9wn","prob":1},{"itemCode":"9sc","prob":2},{"itemCode":"9sp","prob":3},{"itemCode":"9dg","prob":2},{"itemCode":"9tk","prob":2},{"itemCode":"9sr","prob":4},{"itemCode":"9b7","prob":4},{"itemCode":"8hb","prob":2},{"itemCode":"9wb","prob":2},{"itemCode":"ob6","prob":2}]},{"name":"weap36","level":36,"picks":1,"totalProb":41,"entries":[{"itemCode":"wsc","prob":3},{"itemCode":"9ax","prob":4},{"itemCode":"9la","prob":4},{"itemCode":"9ma","prob":4},{"itemCode":"9sb","prob":3},{"itemCode":"9di","prob":2},{"itemCode":"9ta","prob":2},{"itemCode":"9tr","prob":4},{"itemCode":"9pa","prob":4},{"itemCode":"8ls","prob":2},{"itemCode":"8lb","prob":2},{"itemCode":"8lx","prob":2},{"itemCode":"9xf","prob":2},{"itemCode":"ama","prob":3}]},{"name":"weap39","level":39,"picks":1,"totalProb":43,"entries":[{"itemCode":"92a","prob":4},{"itemCode":"9ba","prob":4},{"itemCode":"9yw","prob":1},{"itemCode":"9mt","prob":4},{"itemCode":"9fc","prob":4},{"itemCode":"9cr","prob":2},{"itemCode":"92h","prob":4},{"itemCode":"9bk","prob":2},{"itemCode":"9pi","prob":4},{"itemCode":"9vo","prob":4},{"itemCode":"8cs","prob":2},{"itemCode":"8cb","prob":2},{"itemCode":"ob7","prob":3},{"itemCode":"am6","prob":3}]},{"name":"weap42","level":42,"picks":1,"totalProb":41,"entries":[{"itemCode":"9bt","prob":4},{"itemCode":"9qs","prob":4},{"itemCode":"9bs","prob":4},{"itemCode":"9cm","prob":4},{"itemCode":"9kr","prob":2},{"itemCode":"9b8","prob":2},{"itemCode":"9s9","prob":4},{"itemCode":"9br","prob":4},{"itemCode":"9s8","prob":4},{"itemCode":"8bs","prob":2},{"itemCode":"8mx","prob":2},{"itemCode":"9cs","prob":2},{"itemCode":"ob8","prob":3}]},{"name":"weap45","level":45,"picks":1,"totalProb":39,"entries":[{"itemCode":"9mp","prob":4},{"itemCode":"9bw","prob":1},{"itemCode":"9ws","prob":4},{"itemCode":"9fl","prob":4},{"itemCode":"9m9","prob":4},{"itemCode":"9sm","prob":3},{"itemCode":"9ls","prob":4},{"itemCode":"9gs","prob":4},{"itemCode":"9st","prob":4},{"itemCode":"8s8","prob":2},{"itemCode":"9lw","prob":2},{"itemCode":"am8","prob":3}]},{"name":"weap48","level":48,"picks":1,"totalProb":40,"entries":[{"itemCode":"9wa","prob":4},{"itemCode":"9ga","prob":4},{"itemCode":"9wh","prob":4},{"itemCode":"9b9","prob":4},{"itemCode":"9bl","prob":3},{"itemCode":"9gl","prob":4},{"itemCode":"9p9","prob":4},{"itemCode":"8ws","prob":2},{"itemCode":"8l8","prob":2},{"itemCode":"8hx","prob":2},{"itemCode":"ob9","prob":4},{"itemCode":"am7","prob":3}]},{"name":"weap51","level":51,"picks":1,"totalProb":33,"entries":[{"itemCode":"9gi","prob":4},{"itemCode":"9gw","prob":1},{"itemCode":"9wd","prob":4},{"itemCode":"9fb","prob":4},{"itemCode":"9ts","prob":4},{"itemCode":"9h9","prob":4},{"itemCode":"8sw","prob":2},{"itemCode":"9tw","prob":2},{"itemCode":"oba","prob":5},{"itemCode":"am9","prob":3}]},{"name":"weap54","level":54,"picks":1,"totalProb":24,"entries":[{"itemCode":"9gm","prob":3},{"itemCode":"9gd","prob":4},{"itemCode":"8lw","prob":2},{"itemCode":"8rx","prob":2},{"itemCode":"9qr","prob":2},{"itemCode":"7ha","prob":3},{"itemCode":"7cl","prob":1},{"itemCode":"7ja","prob":4},{"itemCode":"amb","prob":3}]},{"name":"weap57","level":57,"picks":1,"totalProb":20,"entries":[{"itemCode":"9wc","prob":3},{"itemCode":"7la","prob":4},{"itemCode":"7wn","prob":1},{"itemCode":"7sp","prob":3},{"itemCode":"7ss","prob":3},{"itemCode":"7ta","prob":2},{"itemCode":"6sb","prob":2},{"itemCode":"6lx","prob":2}]},{"name":"weap60","level":60,"picks":1,"totalProb":22,"entries":[{"itemCode":"7ar","prob":2},{"itemCode":"72h","prob":4},{"itemCode":"7dg","prob":2},{"itemCode":"7sr","prob":4},{"itemCode":"7o7","prob":4},{"itemCode":"6ss","prob":2},{"itemCode":"6hb","prob":2},{"itemCode":"obb","prob":2}]},{"name":"weap63","level":63,"picks":1,"totalProb":27,"entries":[{"itemCode":"7wb","prob":2},{"itemCode":"7ax","prob":4},{"itemCode":"7sc","prob":2},{"itemCode":"7ma","prob":4},{"itemCode":"7sm","prob":3},{"itemCode":"7sb","prob":3},{"itemCode":"7pi","prob":4},{"itemCode":"6lb","prob":2},{"itemCode":"amd","prob":3}]},{"name":"weap66","level":66,"picks":1,"totalProb":24,"entries":[{"itemCode":"7ba","prob":4},{"itemCode":"7yw","prob":1},{"itemCode":"7cm","prob":4},{"itemCode":"7tk","prob":2},{"itemCode":"7tr","prob":4},{"itemCode":"7vo","prob":4},{"itemCode":"6ls","prob":2},{"itemCode":"amf","prob":3}]},{"name":"weap69","level":69,"picks":1,"totalProb":17,"entries":[{"itemCode":"7xf","prob":2},{"itemCode":"7m7","prob":4},{"itemCode":"7fc","prob":4},{"itemCode":"6cb","prob":2},{"itemCode":"6mx","prob":2},{"itemCode":"obc","prob":3}]},{"name":"weap72","level":72,"picks":1,"totalProb":24,"entries":[{"itemCode":"72a","prob":4},{"itemCode":"7mt","prob":4},{"itemCode":"7gs","prob":4},{"itemCode":"7di","prob":2},{"itemCode":"7s7","prob":4},{"itemCode":"7s8","prob":4},{"itemCode":"6s7","prob":2}]},{"name":"weap75","level":75,"picks":1,"totalProb":20,"entries":[{"itemCode":"7cs","prob":2},{"itemCode":"7bt","prob":4},{"itemCode":"7bw","prob":1},{"itemCode":"7cr","prob":2},{"itemCode":"7br","prob":4},{"itemCode":"6cs","prob":2},{"itemCode":"6hx","prob":2},{"itemCode":"obd","prob":3}]},{"name":"weap78","level":78,"picks":1,"totalProb":25,"entries":[{"itemCode":"7lw","prob":2},{"itemCode":"7qs","prob":4},{"itemCode":"7fl","prob":4},{"itemCode":"7bs","prob":4},{"itemCode":"7b7","prob":4},{"itemCode":"7bk","prob":2},{"itemCode":"6l7","prob":2},{"itemCode":"amc","prob":3}]},{"name":"weap81","level":81,"picks":1,"totalProb":25,"entries":[{"itemCode":"7tw","prob":2},{"itemCode":"7mp","prob":4},{"itemCode":"7fb","prob":4},{"itemCode":"7b8","prob":2},{"itemCode":"7gl","prob":4},{"itemCode":"7pa","prob":4},{"itemCode":"6sw","prob":2},{"itemCode":"ame","prob":3}]},{"name":"weap84","level":84,"picks":1,"totalProb":30,"entries":[{"itemCode":"7ga","prob":4},{"itemCode":"7wh","prob":4},{"itemCode":"7ls","prob":4},{"itemCode":"7kr","prob":2},{"itemCode":"7st","prob":4},{"itemCode":"7h7","prob":4},{"itemCode":"6bs","prob":2},{"itemCode":"6rx","prob":2},{"itemCode":"obe","prob":4}]},{"name":"weap87","level":87,"picks":1,"totalProb":49,"entries":[{"itemCode":"7qr","prob":2},{"itemCode":"7wa","prob":4},{"itemCode":"7gi","prob":4},{"itemCode":"7gw","prob":1},{"itemCode":"7ws","prob":4},{"itemCode":"7gm","prob":3},{"itemCode":"7wd","prob":4},{"itemCode":"7gd","prob":4},{"itemCode":"7bl","prob":3},{"itemCode":"7ts","prob":4},{"itemCode":"7p7","prob":4},{"itemCode":"7wc","prob":3},{"itemCode":"6ws","prob":2},{"itemCode":"6lw","prob":2},{"itemCode":"obf","prob":5}]},{"name":"armo3","level":3,"picks":1,"totalProb":9,"entries":[{"itemCode":"cap","prob":1},{"itemCode":"qui","prob":1},{"itemCode":"lea","prob":2},{"itemCode":"buc","prob":2},{"itemCode":"lgl","prob":1},{"itemCode":"lbt","prob":1},{"itemCode":"lbl","prob":1}]},{"name":"armo6","level":6,"picks":1,"totalProb":16,"entries":[{"itemCode":"skp","prob":4},{"itemCode":"hla","prob":3},{"itemCode":"sml","prob":3},{"itemCode":"dr1","prob":1},{"itemCode":"ba1","prob":2},{"itemCode":"pa1","prob":2},{"itemCode":"ne1","prob":1}]},{"name":"armo9","level":9,"picks":1,"totalProb":13,"entries":[{"itemCode":"stu","prob":4},{"itemCode":"vgl","prob":1},{"itemCode":"vbt","prob":1},{"itemCode":"vbl","prob":1},{"itemCode":"dr2","prob":1},{"itemCode":"ba2","prob":2},{"itemCode":"pa2","prob":2},{"itemCode":"ne2","prob":1}]},{"name":"armo12","level":12,"picks":1,"totalProb":21,"entries":[{"itemCode":"hlm","prob":4},{"itemCode":"rng","prob":4},{"itemCode":"lrg","prob":4},{"itemCode":"mgl","prob":2},{"itemCode":"mbt","prob":2},{"itemCode":"mbl","prob":2},{"itemCode":"spk","prob":3}]},{"name":"armo15","level":15,"picks":1,"totalProb":16,"entries":[{"itemCode":"fhl","prob":4},{"itemCode":"scl","prob":4},{"itemCode":"chn","prob":4},{"itemCode":"kit","prob":4}]},{"name":"armo18","level":18,"picks":1,"totalProb":10,"entries":[{"itemCode":"brs","prob":4},{"itemCode":"dr3","prob":1},{"itemCode":"ba3","prob":2},{"itemCode":"pa3","prob":2},{"itemCode":"ne3","prob":1}]},{"name":"armo21","level":21,"picks":1,"totalProb":24,"entries":[{"itemCode":"msk","prob":4},{"itemCode":"spl","prob":4},{"itemCode":"tgl","prob":3},{"itemCode":"tbt","prob":3},{"itemCode":"tbl","prob":2},{"itemCode":"bsh","prob":2},{"itemCode":"dr4","prob":1},{"itemCode":"ba4","prob":2},{"itemCode":"pa4","prob":2},{"itemCode":"ne4","prob":1}]},{"name":"armo24","level":24,"picks":1,"totalProb":21,"entries":[{"itemCode":"ghm","prob":4},{"itemCode":"plt","prob":4},{"itemCode":"tow","prob":4},{"itemCode":"bhm","prob":2},{"itemCode":"dr5","prob":1},{"itemCode":"ba5","prob":2},{"itemCode":"pa5","prob":2},{"itemCode":"ne5","prob":1},{"itemCode":"ci0","prob":1}]},{"name":"armo27","level":27,"picks":1,"totalProb":11,"entries":[{"itemCode":"hgl","prob":4},{"itemCode":"hbt","prob":4},{"itemCode":"hbl","prob":3}]},{"name":"armo30","level":30,"picks":1,"totalProb":12,"entries":[{"itemCode":"crn","prob":4},{"itemCode":"fld","prob":4},{"itemCode":"gts","prob":4}]},{"name":"armo33","level":33,"picks":1,"totalProb":8,"entries":[{"itemCode":"gth","prob":4},{"itemCode":"xlg","prob":1},{"itemCode":"ba6","prob":2},{"itemCode":"ne6","prob":1}]},{"name":"armo36","level":36,"picks":1,"totalProb":15,"entries":[{"itemCode":"ltp","prob":4},{"itemCode":"xap","prob":1},{"itemCode":"xui","prob":1},{"itemCode":"xea","prob":2},{"itemCode":"xuc","prob":2},{"itemCode":"xlb","prob":1},{"itemCode":"zlb","prob":1},{"itemCode":"dr6","prob":1},{"itemCode":"pa6","prob":2}]},{"name":"armo39","level":39,"picks":1,"totalProb":20,"entries":[{"itemCode":"ful","prob":4},{"itemCode":"xkp","prob":4},{"itemCode":"xla","prob":3},{"itemCode":"xml","prob":3},{"itemCode":"xvg","prob":1},{"itemCode":"xvb","prob":1},{"itemCode":"zvb","prob":1},{"itemCode":"ba7","prob":2},{"itemCode":"ne7","prob":1}]},{"name":"armo42","level":42,"picks":1,"totalProb":26,"entries":[{"itemCode":"aar","prob":4},{"itemCode":"xlm","prob":4},{"itemCode":"xtu","prob":4},{"itemCode":"xng","prob":4},{"itemCode":"xrg","prob":4},{"itemCode":"xpk","prob":3},{"itemCode":"dr7","prob":1},{"itemCode":"pa7","prob":2}]},{"name":"armo45","level":45,"picks":1,"totalProb":25,"entries":[{"itemCode":"xhl","prob":4},{"itemCode":"xcl","prob":4},{"itemCode":"xhn","prob":4},{"itemCode":"xit","prob":4},{"itemCode":"xmg","prob":2},{"itemCode":"xmb","prob":2},{"itemCode":"zmb","prob":2},{"itemCode":"ba8","prob":2},{"itemCode":"ne8","prob":1}]},{"name":"armo48","level":48,"picks":1,"totalProb":13,"entries":[{"itemCode":"xsk","prob":4},{"itemCode":"xrs","prob":4},{"itemCode":"xsh","prob":2},{"itemCode":"dr8","prob":1},{"itemCode":"pa8","prob":2}]},{"name":"armo51","level":51,"picks":1,"totalProb":28,"entries":[{"itemCode":"xhm","prob":4},{"itemCode":"xpl","prob":4},{"itemCode":"xow","prob":4},{"itemCode":"xtg","prob":3},{"itemCode":"xtb","prob":3},{"itemCode":"ztb","prob":2},{"itemCode":"xh9","prob":2},{"itemCode":"dr9","prob":1},{"itemCode":"ba9","prob":2},{"itemCode":"pa9","prob":2},{"itemCode":"ne9","prob":1}]},{"name":"armo54","level":54,"picks":1,"totalProb":23,"entries":[{"itemCode":"xlt","prob":4},{"itemCode":"xhg","prob":4},{"itemCode":"xhb","prob":4},{"itemCode":"zhb","prob":3},{"itemCode":"ci1","prob":1},{"itemCode":"uhl","prob":4},{"itemCode":"baa","prob":2},{"itemCode":"nea","prob":1}]},{"name":"armo57","level":57,"picks":1,"totalProb":16,"entries":[{"itemCode":"xrn","prob":4},{"itemCode":"xld","prob":4},{"itemCode":"xts","prob":4},{"itemCode":"ulg","prob":1},{"itemCode":"dra","prob":1},{"itemCode":"paa","prob":2}]},{"name":"armo60","level":60,"picks":1,"totalProb":15,"entries":[{"itemCode":"xth","prob":4},{"itemCode":"xtp","prob":4},{"itemCode":"uap","prob":1},{"itemCode":"uuc","prob":2},{"itemCode":"ulb","prob":1},{"itemCode":"bab","prob":2},{"itemCode":"neb","prob":1}]},{"name":"armo63","level":63,"picks":1,"totalProb":20,"entries":[{"itemCode":"xul","prob":4},{"itemCode":"ukp","prob":4},{"itemCode":"uhn","prob":4},{"itemCode":"uml","prob":3},{"itemCode":"uvg","prob":1},{"itemCode":"ulc","prob":1},{"itemCode":"drb","prob":1},{"itemCode":"pab","prob":2}]},{"name":"armo66","level":66,"picks":1,"totalProb":13,"entries":[{"itemCode":"xar","prob":4},{"itemCode":"uui","prob":1},{"itemCode":"urg","prob":4},{"itemCode":"uvb","prob":1},{"itemCode":"bac","prob":2},{"itemCode":"ned","prob":1}]},{"name":"armo69","level":69,"picks":1,"totalProb":17,"entries":[{"itemCode":"ulm","prob":4},{"itemCode":"uea","prob":2},{"itemCode":"ula","prob":3},{"itemCode":"umg","prob":2},{"itemCode":"uvc","prob":1},{"itemCode":"upk","prob":3},{"itemCode":"drc","prob":1},{"itemCode":"neg","prob":1}]},{"name":"armo72","level":72,"picks":1,"totalProb":17,"entries":[{"itemCode":"ci2","prob":1},{"itemCode":"utu","prob":4},{"itemCode":"ung","prob":4},{"itemCode":"uit","prob":4},{"itemCode":"umb","prob":2},{"itemCode":"pac","prob":2}]},{"name":"armo75","level":75,"picks":1,"totalProb":18,"entries":[{"itemCode":"usk","prob":4},{"itemCode":"ucl","prob":4},{"itemCode":"urs","prob":4},{"itemCode":"umc","prob":2},{"itemCode":"bad","prob":2},{"itemCode":"pad","prob":2}]},{"name":"armo78","level":78,"picks":1,"totalProb":14,"entries":[{"itemCode":"upl","prob":4},{"itemCode":"ult","prob":4},{"itemCode":"utg","prob":3},{"itemCode":"ush","prob":2},{"itemCode":"drd","prob":1}]},{"name":"armo81","level":81,"picks":1,"totalProb":18,"entries":[{"itemCode":"uhm","prob":4},{"itemCode":"uld","prob":4},{"itemCode":"uow","prob":4},{"itemCode":"utb","prob":3},{"itemCode":"bae","prob":2},{"itemCode":"nee","prob":1}]},{"name":"armo84","level":84,"picks":1,"totalProb":23,"entries":[{"itemCode":"uth","prob":4},{"itemCode":"uul","prob":4},{"itemCode":"utp","prob":4},{"itemCode":"uts","prob":4},{"itemCode":"utc","prob":2},{"itemCode":"uh9","prob":2},{"itemCode":"dre","prob":1},{"itemCode":"pae","prob":2}]},{"name":"armo87","level":87,"picks":1,"totalProb":26,"entries":[{"itemCode":"ci3","prob":1},{"itemCode":"urn","prob":4},{"itemCode":"uar","prob":4},{"itemCode":"uhg","prob":4},{"itemCode":"uhb","prob":4},{"itemCode":"uhc","prob":3},{"itemCode":"drf","prob":1},{"itemCode":"baf","prob":2},{"itemCode":"paf","prob":2},{"itemCode":"nef","prob":1}]},{"name":"bow3","level":3,"picks":1,"totalProb":2,"entries":[{"itemCode":"sbw","prob":2}]},{"name":"bow6","level":6,"picks":1,"totalProb":2,"entries":[{"itemCode":"hbw","prob":2}]},{"name":"bow9","level":9,"picks":1,"totalProb":2,"entries":[{"itemCode":"lbw","prob":2}]},{"name":"bow12","level":12,"picks":1,"totalProb":2,"entries":[{"itemCode":"cbw","prob":2}]},{"name":"bow15","level":15,"picks":1,"totalProb":0,"entries":[]},{"name":"bow18","level":18,"picks":1,"totalProb":5,"entries":[{"itemCode":"sbb","prob":2},{"itemCode":"am1","prob":3}]},{"name":"bow21","level":21,"picks":1,"totalProb":0,"entries":[]},{"name":"bow24","level":24,"picks":1,"totalProb":2,"entries":[{"itemCode":"lbb","prob":2}]},{"name":"bow27","level":27,"picks":1,"totalProb":5,"entries":[{"itemCode":"swb","prob":2},{"itemCode":"am2","prob":3}]},{"name":"bow30","level":30,"picks":1,"totalProb":2,"entries":[{"itemCode":"8sb","prob":2}]},{"name":"bow33","level":33,"picks":1,"totalProb":4,"entries":[{"itemCode":"lwb","prob":2},{"itemCode":"8hb","prob":2}]},{"name":"bow36","level":36,"picks":1,"totalProb":2,"entries":[{"itemCode":"8lb","prob":2}]},{"name":"bow39","level":39,"picks":1,"totalProb":5,"entries":[{"itemCode":"8cb","prob":2},{"itemCode":"am6","prob":3}]},{"name":"bow42","level":42,"picks":1,"totalProb":0,"entries":[]},{"name":"bow45","level":45,"picks":1,"totalProb":2,"entries":[{"itemCode":"8s8","prob":2}]},{"name":"bow48","level":48,"picks":1,"totalProb":5,"entries":[{"itemCode":"8l8","prob":2},{"itemCode":"am7","prob":3}]},{"name":"bow51","level":51,"picks":1,"totalProb":2,"entries":[{"itemCode":"8sw","prob":2}]},{"name":"bow54","level":54,"picks":1,"totalProb":5,"entries":[{"itemCode":"8lw","prob":2},{"itemCode":"amb","prob":3}]},{"name":"bow57","level":57,"picks":1,"totalProb":2,"entries":[{"itemCode":"6sb","prob":2}]},{"name":"bow60","level":60,"picks":1,"totalProb":2,"entries":[{"itemCode":"6hb","prob":2}]},{"name":"bow63","level":63,"picks":1,"totalProb":2,"entries":[{"itemCode":"6lb","prob":2}]},{"name":"bow66","level":66,"picks":1,"totalProb":0,"entries":[]},{"name":"bow69","level":69,"picks":1,"totalProb":2,"entries":[{"itemCode":"6cb","prob":2}]},{"name":"bow72","level":72,"picks":1,"totalProb":2,"entries":[{"itemCode":"6s7","prob":2}]},{"name":"bow75","level":75,"picks":1,"totalProb":0,"entries":[]},{"name":"bow78","level":78,"picks":1,"totalProb":5,"entries":[{"itemCode":"6l7","prob":2},{"itemCode":"amc","prob":3}]},{"name":"bow81","level":81,"picks":1,"totalProb":2,"entries":[{"itemCode":"6sw","prob":2}]},{"name":"bow84","level":84,"picks":1,"totalProb":0,"entries":[]},{"name":"bow87","level":87,"picks":1,"totalProb":2,"entries":[{"itemCode":"6lw","prob":2}]},{"name":"mele3","level":3,"picks":1,"totalProb":22,"entries":[{"itemCode":"hax","prob":3},{"itemCode":"wnd","prob":1},{"itemCode":"clb","prob":1},{"itemCode":"scp","prob":2},{"itemCode":"ssd","prob":3},{"itemCode":"dgr","prob":2},{"itemCode":"tkf","prob":2},{"itemCode":"jav","prob":4},{"itemCode":"sst","prob":2},{"itemCode":"ktr","prob":2}]},{"name":"mele6","level":6,"picks":1,"totalProb":18,"entries":[{"itemCode":"lax","prob":4},{"itemCode":"spc","prob":3},{"itemCode":"scm","prob":3},{"itemCode":"spr","prob":4},{"itemCode":"bar","prob":4}]},{"name":"mele9","level":9,"picks":1,"totalProb":23,"entries":[{"itemCode":"axe","prob":4},{"itemCode":"mac","prob":4},{"itemCode":"sbr","prob":3},{"itemCode":"dir","prob":2},{"itemCode":"tax","prob":2},{"itemCode":"tri","prob":4},{"itemCode":"lst","prob":2},{"itemCode":"wrb","prob":2}]},{"name":"mele12","level":12,"picks":1,"totalProb":27,"entries":[{"itemCode":"bax","prob":4},{"itemCode":"ywn","prob":1},{"itemCode":"flc","prob":4},{"itemCode":"crs","prob":2},{"itemCode":"2hs","prob":4},{"itemCode":"pil","prob":4},{"itemCode":"vou","prob":4},{"itemCode":"cst","prob":2},{"itemCode":"axf","prob":2}]},{"name":"mele15","level":15,"picks":1,"totalProb":28,"entries":[{"itemCode":"2ax","prob":4},{"itemCode":"gsc","prob":4},{"itemCode":"mst","prob":4},{"itemCode":"bsd","prob":4},{"itemCode":"bkf","prob":2},{"itemCode":"ssp","prob":4},{"itemCode":"scy","prob":4},{"itemCode":"ces","prob":2}]},{"name":"mele18","level":18,"picks":1,"totalProb":24,"entries":[{"itemCode":"btx","prob":4},{"itemCode":"bwn","prob":1},{"itemCode":"clm","prob":4},{"itemCode":"kri","prob":2},{"itemCode":"bal","prob":2},{"itemCode":"brn","prob":4},{"itemCode":"bst","prob":2},{"itemCode":"clw","prob":2},{"itemCode":"am3","prob":3}]},{"name":"mele21","level":21,"picks":1,"totalProb":34,"entries":[{"itemCode":"mpi","prob":4},{"itemCode":"wsp","prob":4},{"itemCode":"fla","prob":4},{"itemCode":"mau","prob":4},{"itemCode":"lsd","prob":4},{"itemCode":"gis","prob":4},{"itemCode":"spt","prob":4},{"itemCode":"pax","prob":4},{"itemCode":"btl","prob":2}]},{"name":"mele24","level":24,"picks":1,"totalProb":26,"entries":[{"itemCode":"gax","prob":4},{"itemCode":"bsw","prob":4},{"itemCode":"bld","prob":3},{"itemCode":"glv","prob":4},{"itemCode":"pik","prob":4},{"itemCode":"wst","prob":2},{"itemCode":"skr","prob":2},{"itemCode":"am5","prob":3}]},{"name":"mele27","level":27,"picks":1,"totalProb":24,"entries":[{"itemCode":"wax","prob":4},{"itemCode":"gix","prob":4},{"itemCode":"gwn","prob":1},{"itemCode":"whm","prob":4},{"itemCode":"wsd","prob":4},{"itemCode":"flb","prob":4},{"itemCode":"am4","prob":3}]},{"name":"mele30","level":30,"picks":1,"totalProb":20,"entries":[{"itemCode":"tsp","prob":4},{"itemCode":"hal","prob":4},{"itemCode":"9cl","prob":1},{"itemCode":"9ss","prob":3},{"itemCode":"9ja","prob":4},{"itemCode":"8ss","prob":2},{"itemCode":"9ar","prob":2}]},{"name":"mele33","level":33,"picks":1,"totalProb":30,"entries":[{"itemCode":"gma","prob":3},{"itemCode":"gsd","prob":4},{"itemCode":"9ha","prob":3},{"itemCode":"9wn","prob":1},{"itemCode":"9sc","prob":2},{"itemCode":"9sp","prob":3},{"itemCode":"9dg","prob":2},{"itemCode":"9tk","prob":2},{"itemCode":"9sr","prob":4},{"itemCode":"9b7","prob":4},{"itemCode":"9wb","prob":2}]},{"name":"mele36","level":36,"picks":1,"totalProb":37,"entries":[{"itemCode":"wsc","prob":3},{"itemCode":"9ax","prob":4},{"itemCode":"9la","prob":4},{"itemCode":"9ma","prob":4},{"itemCode":"9sb","prob":3},{"itemCode":"9di","prob":2},{"itemCode":"9ta","prob":2},{"itemCode":"9tr","prob":4},{"itemCode":"9pa","prob":4},{"itemCode":"8ls","prob":2},{"itemCode":"9xf","prob":2},{"itemCode":"ama","prob":3}]},{"name":"mele39","level":39,"picks":1,"totalProb":35,"entries":[{"itemCode":"92a","prob":4},{"itemCode":"9ba","prob":4},{"itemCode":"9yw","prob":1},{"itemCode":"9mt","prob":4},{"itemCode":"9fc","prob":4},{"itemCode":"9cr","prob":2},{"itemCode":"92h","prob":4},{"itemCode":"9bk","prob":2},{"itemCode":"9pi","prob":4},{"itemCode":"9vo","prob":4},{"itemCode":"8cs","prob":2}]}];
|
||
|
||
export const CANONICAL_ITEM_NAMES: Readonly<Record<string, string>> = {"cap":"Cap (便帽)","skp":"Skull Cap","hlm":"Helm","fhl":"Full Helm","ghm":"Great Helm","crn":"Crown","msk":"Mask","qui":"Quilted Armor","lea":"Leather Armor","hla":"Hard Leather Armor","stu":"Studded Leather","rng":"Ring Mail","scl":"Scale Mail","chn":"Chain Mail","brs":"Breast Plate","spl":"Splint Mail","plt":"Plate Mail","fld":"Field Plate","gth":"Gothic Plate","ful":"Full Plate Mail","aar":"Ancient Armor","ltp":"Light Plate","buc":"Buckler","sml":"Small Shield","lrg":"Large Shield","kit":"Kite Shield","tow":"Tower Shield","gts":"Gothic Shield","lgl":"Gloves(L)","vgl":"Heavy Gloves","mgl":"Bracers(M)","tgl":"Light Gauntlets","hgl":"Gaunlets(H)","lbt":"Leather Boots","vbt":"Heavy Boots","mbt":"Chain Boots","tbt":"Light Plate Boots","hbt":"Plate Boots","lbl":"Sash(L)","vbl":"Light Belt","mbl":"Belt(M)","tbl":"Heavy Belt","hbl":"Girdle(H)","bhm":"Bone Helm","bsh":"Bone Shield","spk":"Spiked Shield","xap":"War Hat","xkp":"Sallet","xlm":"Casque","xhl":"Basinet","xhm":"Winged Helm","xrn":"Grand Crown","xsk":"Death Mask","xui":"Ghost Armor","xea":"Serpentskin Armor","xla":"Demonhide Armor","xtu":"Trellised Armor","xng":"Linked Mail","xcl":"Tigulated Mail","xhn":"Mesh Armor","xrs":"Cuirass","xpl":"Russet Armor","xlt":"Templar Coat","xld":"Sharktooth Armor","xth":"Embossed Plate","xul":"Chaos Armor","xar":"Ornate Armor","xtp":"Mage Plate","xuc":"Defender","xml":"Round Shield","xrg":"Scutum","xit":"Dragon Shield","xow":"Pavise","xts":"Ancient Shield","xlg":"Demonhide Gloves","xvg":"Sharkskin Gloves","xmg":"Heavy Bracers","xtg":"Battle Gauntlets","xhg":"War Gauntlets","xlb":"Demonhide Boots","xvb":"Sharkskin Boots","xmb":"Mesh Boots","xtb":"Battle Boots","xhb":"War Boots","zlb":"Demonhide Sash","zvb":"Sharkskin Belt","zmb":"Mesh Belt","ztb":"Battle Belt","zhb":"War Belt","xh9":"Grim Helm","xsh":"Grim Shield","xpk":"Barbed Shield","dr1":"Wolf Head","dr2":"Hawk Helm","dr3":"Antlers","dr4":"Falcon Mask","dr5":"Spirit Mask","ba1":"Jawbone Cap","ba2":"Fanged Helm","ba3":"Horned Helm","ba4":"Assault Helmet","ba5":"Avenger Guard","pa1":"Targe","pa2":"Rondache","pa3":"Heraldic Shield","pa4":"Aerin Shield","pa5":"Crown Shield","ne1":"Preserved Head","ne2":"Zombie Head","ne3":"Unraveller Head","ne4":"Gargoyle Head","ne5":"Demon Head","ci0":"Circlet","ci1":"Coronet","ci2":"Tiara","ci3":"Diadem","uap":"Shako (军帽)","ukp":"Hydraskull","ulm":"Armet","uhl":"Giant Conch","uhm":"Spired Helm","urn":"Corona","usk":"Demonhead","uui":"Dusk Shroud","uea":"Wyrmhide","ula":"Scarab Husk","utu":"Wire Fleece","ung":"Diamond Mail","ucl":"Loricated Mail","uhn":"Boneweave","urs":"Great Hauberk","upl":"Balrog Skin","ult":"Hellforged Plate","uld":"Kraken Shell","uth":"Lacquered Plate","uul":"Shadow Plate","uar":"Sacred Armor","utp":"Archon Plate","uuc":"Heater","uml":"Luna","urg":"Hyperion","uit":"Monarch","uow":"Aegis","uts":"Ward","ulg":"Bramble Mitts","uvg":"Vampirebone Gloves","umg":"Vambraces","utg":"Crusader Gauntlets","uhg":"Ogre Gauntlets","ulb":"Wyrmhide Boots","uvb":"Scarabshell Boots","umb":"Boneweave Boots","utb":"Mirrored Boots","uhb":"Myrmidon Greaves","ulc":"Spiderweb Sash","uvc":"Vampirefang Belt","umc":"Mithril Coil","utc":"Troll Belt","uhc":"Colossus Girdle","uh9":"Bone Visage","ush":"Troll Nest","upk":"Blade Barrier","dr6":"Alpha Helm","dr7":"Griffon Headress","dr8":"Hunter's Guise","dr9":"Sacred Feathers","dra":"Totemic Mask","ba6":"Jawbone Visor","ba7":"Lion Helm","ba8":"Rage Mask","ba9":"Savage Helmet","baa":"Slayer Guard","pa6":"Akaran Targe","pa7":"Akaran Rondache","pa8":"Protector Shield","pa9":"Guilded Shield","paa":"Royal Shield","ne6":"Mummified Trophy","ne7":"Fetish Trophy","ne8":"Sexton Trophy","ne9":"Cantor Trophy","nea":"Heirophant Trophy","drb":"Blood Spirt","drc":"Sun Spirit","drd":"Earth Spirit","dre":"Sky Spirit","drf":"Dream Spirit","bab":"Carnage Helm","bac":"Fury Visor","bad":"Destroyer Helm","bae":"Conquerer Crown","baf":"Guardian Crown","pab":"Sacred Targe","pac":"Sacred Rondache","pad":"Ancient Shield","pae":"Zakarum Shield","paf":"Vortex Shield","neb":"Minion Skull","neg":"Hellspawn Skull","ned":"Overseer Skull","nee":"Succubae Skull","nef":"Bloodlord Skull","hax":"Hand Axe","axe":"Axe","2ax":"Double Axe","mpi":"Military Pick","wax":"War Axe","lax":"Large Axe","bax":"Broad Axe","btx":"Battle Axe","gax":"Great Axe","gix":"Giant Axe","wnd":"Wand","ywn":"Yew Wand","bwn":"Bone Wand","gwn":"Grim Wand","clb":"Club","scp":"Scepter","gsc":"Grand Scepter","wsp":"War Scepter","spc":"Spiked Club","mac":"Mace","mst":"Morning Star","fla":"Flail","whm":"War Hammer","mau":"Maul","gma":"Great Maul","ssd":"Short Sword","scm":"Scimitar","sbr":"Saber","flc":"Falchion","crs":"Crystal Sword","bsd":"Broad Sword","lsd":"Long Sword","wsd":"War Sword","2hs":"Two-Handed Sword","clm":"Claymore","gis":"Giant Sword","bsw":"Bastard Sword","flb":"Flamberge","gsd":"Great Sword","dgr":"Dagger","dir":"Dirk","kri":"Kriss","bld":"Blade","tkf":"Throwing Knife","tax":"Throwing Axe","bkf":"Balanced Knife","bal":"Balanced Axe","jav":"Javelin","pil":"Pilum","ssp":"Short Spear","glv":"Glaive","tsp":"Throwing Spear","spr":"Spear","tri":"Trident","brn":"Brandistock","spt":"Spetum","pik":"Pike","bar":"Bardiche","vou":"Voulge","scy":"Scythe","pax":"Poleaxe","hal":"Halberd","wsc":"War Scythe","sst":"Short Staff","lst":"Long Staff","cst":"Gnarled Staff","bst":"Battle Staff","wst":"War Staff","sbw":"Short Bow","hbw":"Hunter's Bow","lbw":"Long Bow","cbw":"Composite Bow","sbb":"Short Battle Bow","lbb":"Long Battle Bow","swb":"Short War Bow","lwb":"Long War Bow","lxb":"Light Crossbow","mxb":"Crossbow","hxb":"Heavy Crossbow","rxb":"Repeating Crossbow","gps":"Rancid Gas Potion","ops":"Oil Potion","gpm":"Choking Gas Potion","opm":"Exploding Potion","gpl":"Strangling Gas Potion","opl":"Fulminating Potion","d33":"decoy dagger","g33":"Gidbinn","leg":"Wirt's Leg","hdm":"Horadric Malus","hfh":"Hellforge Hammer","hst":"Horadric Staff","msf":"Staff of the Kings","9ha":"Hatchet","9ax":"Cleaver","92a":"Twin Axe","9mp":"Crowbill","9wa":"Naga","9la":"Military Axe","9ba":"Bearded Axe","9bt":"Tabar","9ga":"Gothic Axe","9gi":"Ancient Axe","9wn":"Burnt Wand","9yw":"Petrified Wand","9bw":"Tomb Wand","9gw":"Grave Wand","9cl":"Cudgel","9sc":"Rune Scepter","9qs":"Holy Water Sprinkler","9ws":"Divine Scepter","9sp":"Barbed Club","9ma":"Flanged Mace","9mt":"Jagged Star","9fl":"Knout","9wh":"Battle Hammer","9m9":"War Club","9gm":"Martel de Fer","9ss":"Gladius","9sm":"Cutlass","9sb":"Shamshir","9fc":"Tulwar","9cr":"Dimensional Blade","9bs":"Battle Sword","9ls":"Rune Sword","9wd":"Ancient Sword","92h":"Espadon","9cm":"Dacian Falx","9gs":"Tusk Sword","9b9":"Gothic Sword","9fb":"Zweihander","9gd":"Executioner Sword","9dg":"Poignard","9di":"Rondel","9kr":"Cinquedeas","9bl":"Stilleto","9tk":"Battle Dart","9ta":"Francisca","9bk":"War Dart","9b8":"Hurlbat","9ja":"War Javelin","9pi":"Great Pilum","9s9":"Simbilan","9gl":"Spiculum","9ts":"Harpoon","9sr":"War Spear","9tr":"Fuscina","9br":"War Fork","9st":"Yari","9p9":"Lance","9b7":"Lochaber Axe","9vo":"Bill","9s8":"Battle Scythe","9pa":"Partizan","9h9":"Bec-de-Corbin","9wc":"Grim Scythe","8ss":"Jo Staff","8ls":"Quarterstaff","8cs":"Cedar Staff","8bs":"Gothic Staff","8ws":"Rune Staff","8sb":"Edge Bow","8hb":"Razor Bow","8lb":"Cedar Bow","8cb":"Double Bow","8s8":"Short Siege Bow","8l8":"Long Siege Bow","8sw":"Rune Bow","8lw":"Gothic Bow","8lx":"Arbalest","8mx":"Siege Crossbow","8hx":"Balista","8rx":"Chu-Ko-Nu","qf1":"KhalimFlail","qf2":"SuperKhalimFlail","ktr":"Katar","wrb":"Wrist Blade","axf":"Hatchet Hands","ces":"Cestus","clw":"Claws","btl":"Blade Talons","skr":"Scissors Katar","9ar":"Quhab","9wb":"Wrist Spike","9xf":"Fascia","9cs":"Hand Scythe","9lw":"Greater Claws","9tw":"Greater Talons","9qr":"Scissors Quhab","7ar":"Suwayyah","7wb":"Wrist Sword","7xf":"War Fist","7cs":"Battle Cestus","7lw":"Feral Claws","7tw":"Runic Talons","7qr":"Scissors Suwayyah","7ha":"Tomahawk","7ax":"Small Crescent","72a":"Ettin Axe","7mp":"War Spike","7wa":"Berserker Axe","7la":"Feral Axe","7ba":"Silver Edged Axe","7bt":"Decapitator","7ga":"Champion Axe","7gi":"Glorious Axe","7wn":"Polished Wand","7yw":"Ghost Wand","7bw":"Lich Wand","7gw":"Unearthed Wand","7cl":"Truncheon","7sc":"Mighty Scepter","7qs":"Seraph Rod","7ws":"Caduceus","7sp":"Tyrant Club","7ma":"Reinforced Mace","7mt":"Devil Star","7fl":"Scourge","7wh":"Legendary Mallet","7m7":"Ogre Maul","7gm":"Thunder Maul","7ss":"Falcata","7sm":"Ataghan","7sb":"Elegant Blade","7fc":"Hydra Edge","7cr":"Phase Blade","7bs":"Conquest Sword","7ls":"Cryptic Sword","7wd":"Mythical Sword","72h":"Legend Sword","7cm":"Highland Blade","7gs":"Balrog Blade","7b7":"Champion Sword","7fb":"Colossal Sword","7gd":"Colossus Blade","7dg":"Bone Knife","7di":"Mithral Point","7kr":"Fanged Knife","7bl":"Legend Spike","7tk":"Flying Knife","7ta":"Flying Axe","7bk":"Winged Knife","7b8":"Winged Axe","7ja":"Hyperion Javelin","7pi":"Stygian Pilum","7s7":"Balrog Spear","7gl":"Ghost Glaive","7ts":"Winged Harpoon","7sr":"Hyperion Spear","7tr":"Stygian Pike","7br":"Mancatcher","7st":"Ghost Spear","7p7":"War Pike","7o7":"Ogre Axe","7vo":"Colossus Voulge","7s8":"Thresher","7pa":"Cryptic Axe","7h7":"Great Poleaxe","7wc":"Giant Thresher","6ss":"Walking Stick","6ls":"Stalagmite","6cs":"Elder Staff","6bs":"Shillelah","6ws":"Archon Staff","6sb":"Spider Bow","6hb":"Blade Bow","6lb":"Shadow Bow","6cb":"Great Bow","6s7":"Diamond Bow","6l7":"Crusader Bow","6sw":"Ward Bow","6lw":"Hydra Bow","6lx":"Pellet Bow","6mx":"Gorgon Crossbow","6hx":"Colossus Crossbow","6rx":"Demon Crossbow","ob1":"Eagle Orb","ob2":"Sacred Globe","ob3":"Smoked Sphere","ob4":"Clasped Orb","ob5":"Dragon Stone","am1":"Stag Bow","am2":"Reflex Bow","am3":"Maiden Spear","am4":"Maiden Pike","am5":"Maiden Javelin","ob6":"Glowing Orb","ob7":"Crystalline Globe","ob8":"Cloudy Sphere","ob9":"Sparkling Ball","oba":"Swirling Crystal","am6":"Ashwood Bow","am7":"Ceremonial Bow","am8":"Ceremonial Spear","am9":"Ceremonial Pike","ama":"Ceremonial Javelin","obb":"Heavenly Stone","obc":"Eldritch Orb","obd":"Demon Heart","obe":"Vortex Orb","obf":"Dimensional Shard","amb":"Matriarchal Bow","amc":"Grand Matron Bow","amd":"Matriarchal Spear","ame":"Matriarchal Pike","amf":"MatriarchalJavelin","elx":"elixir","hpo":"Healing Potion","mpo":"Mana Potion","hpf":"Full Healing Potion","mpf":"Full Mana Potion","vps":"Stamina Potion","yps":"Antidote Potion","rvs":"Rejuv Potion","rvl":"Full Rejuv Potion","wms":"Thawing Potion","tbk":"Town Portal Book","ibk":"Identify Book","amu":"amulet","vip":"viper amulet","rin":"ring","gld":"Gold (金币)","bks":"Bark Scroll","bkd":"deciphered Bark Scroll","aqv":"Arrows","tch":"Torch","cqv":"Bolts","tsc":"Town Portal Scroll","isc":"Identify Scroll","hrt":"Not used","brz":"Not used","jaw":"Not used","eyz":"Not used","hrn":"Not used","tal":"Not used","flg":"Not used","fng":"Not used","qll":"Not used","sol":"Not used","scz":"Not used","spe":"Not used","key":"Skeleton Key","luv":"Mephisto Key","xyz":"scroll of self resurrect","j34":"jade figurine","g34":"gold bird","bbb":"lam esen's tome","box":"Horadric Cube","tr1":"Scroll of Horadric Quest Info","mss":"Mephisto SoulStone","ass":"Book of Skill","qey":"KhalimEye","qhr":"KhalimHeart","qbr":"KhalimBrain","ear":"Player Ear","gcv":"Chipped Amethyst","gfv":"Flawed Amethyst","gsv":"Amethyst","gzv":"Flawless Amethyst","gpv":"Perfect Amethyst","gcy":"Chipped Topaz","gfy":"Flawed Topaz","gsy":"Topaz","gly":"Flawless Topaz","gpy":"Perfect Topaz","gcb":"Chipped Saphire","gfb":"Flawed Saphire","gsb":"Saphire","glb":"Flawless Saphire","gpb":"Perfect Saphire","gcg":"Chipped Emerald","gfg":"Flawed Emerald","gsg":"Emerald","glg":"Flawless Emerald","gpg":"Perfect Emerald","gcr":"Chipped Ruby","gfr":"Flawed Ruby","gsr":"Ruby","glr":"Flawless Ruby","gpr":"Perfect Ruby","gcw":"Chipped Diamond","gfw":"Flawed Diamond","gsw":"Diamond","glw":"Flawless Diamond","gpw":"Perfect Diamond","hp1":"Lesser Healing Potion","hp2":"Light Healing Potion","hp3":"Healing Potion","hp4":"Strong Healing Potion","hp5":"Greater Healing Potion","mp1":"Lesser Mana Potion","mp2":"Light Mana Potion","mp3":"Mana Potion","mp4":"Strong Mana Potion","mp5":"Greater Mana Potion","skc":"Chipped Skull","skf":"Flawed Skull","sku":"Skull","skl":"Flawless Skull","skz":"Perfect Skull","hrb":"herb","cm1":"Charm Small","cm2":"Charm Medium","cm3":"Charm Large","rps":"Small Red Potion","rpl":"Large Red Potion","bps":"Small Blue Potion","bpl":"Large Blue Potion","r01":"El Rune","r02":"Eld Rune","r03":"Tir Rune","r04":"Nef Rune","r05":"Eth Rune","r06":"Ith Rune","r07":"Tal Rune","r08":"Ral Rune","r09":"Ort Rune","r10":"Thul Rune","r11":"Amn Rune","r12":"Sol Rune","r13":"Shael Rune","r14":"Dol Rune","r15":"Hel Rune","r16":"Io Rune","r17":"Lum Rune","r18":"Ko Rune","r19":"Fal Rune","r20":"Lem Rune (20# 蓝姆)","r21":"Pul Rune (21# 普尔)","r22":"Um Rune (22# 乌姆)","r23":"Mal Rune (23# 马尔)","r24":"Ist Rune (24# 伊司特)","r25":"Gul Rune (25# 古尔)","r26":"Vex Rune (26# 伐克斯)","r27":"Ohm Rune (27# 欧姆)","r28":"Lo Rune (28# 罗)","r29":"Sur Rune (29# 瑟)","r30":"Ber Rune (30# 贝)","r31":"Jah Rune (31# 乔)","r32":"Cham Rune (32# 查姆)","r33":"Zod Rune (33# 萨德)","jew":"Jewel","ice":"Maguffin","0sc":"Scroll","tr2":"Scroll of Malah - Boost Resistances","pk1":"Key of Terror (恐惧之钥)","pk2":"Key of Hate (憎恨之钥)","pk3":"Key of Destruction (毁灭之钥)","dhn":"Charged Essence of Hatred (憎恨之精华)","bey":"Baal's Eye","mbr":"Twisted Essence of Suffering (痛苦之精华)","toa":"Token of Absolution","tes":"Token of Absolution (赦免徽章)","ceh":"Standard of Heroes (英雄旗帜)","bet":"Burning Essence of Terror (恐惧之精华)","fed":"Festering Essence of Destruction (毁灭之精华)","std":"Standard","Annihilus":"Annihilus (毁灭小护身符)"};
|
||
|
||
export const CANONICAL_ITEM_RATIO_ROWS: readonly ItemRatioRow[] = [
|
||
{ function: 'Ratio', version: 0, uber: 0, classSpecific: 0, unique: 400, uniqueDiv: 2, uniqueMin: 6400, rare: 160, rareDiv: 3, rareMin: 3200, set: 125, setDiv: 6, setMin: 5600, magic: 30, magicDiv: 16, magicMin: 192, hiQual: 12, hiQualDiv: 16, normal: 4, normalDiv: 8 },
|
||
{ function: 'Uber', version: 0, uber: 1, classSpecific: 0, unique: 240, uniqueDiv: 2, uniqueMin: 6400, rare: 96, rareDiv: 3, rareMin: 3200, set: 96, setDiv: 6, setMin: 5600, magic: 3, magicDiv: 100, magicMin: 192, hiQual: 4, hiQualDiv: 16, normal: 1, normalDiv: 8 },
|
||
{ function: 'Ratio Exp', version: 1, uber: 0, classSpecific: 0, unique: 400, uniqueDiv: 1, uniqueMin: 6400, rare: 100, rareDiv: 2, rareMin: 3200, set: 160, setDiv: 2, setMin: 5600, magic: 34, magicDiv: 3, magicMin: 192, hiQual: 12, hiQualDiv: 8, normal: 2, normalDiv: 2 },
|
||
{ function: 'Uber Exp', version: 1, uber: 1, classSpecific: 0, unique: 400, uniqueDiv: 1, uniqueMin: 6400, rare: 100, rareDiv: 2, rareMin: 3200, set: 160, setDiv: 2, setMin: 5600, magic: 34, magicDiv: 3, magicMin: 192, hiQual: 12, hiQualDiv: 8, normal: 1, normalDiv: 1 },
|
||
{ function: 'Class Specific', version: 1, uber: 0, classSpecific: 1, unique: 240, uniqueDiv: 3, uniqueMin: 6400, rare: 80, rareDiv: 3, rareMin: 3200, set: 120, setDiv: 3, setMin: 5600, magic: 17, magicDiv: 6, magicMin: 192, hiQual: 9, hiQualDiv: 8, normal: 2, normalDiv: 2 },
|
||
{ function: 'Class Specific Uber', version: 1, uber: 1, classSpecific: 1, unique: 240, uniqueDiv: 3, uniqueMin: 6400, rare: 80, rareDiv: 3, rareMin: 3200, set: 120, setDiv: 3, setMin: 5600, magic: 17, magicDiv: 6, magicMin: 192, hiQual: 9, hiQualDiv: 8, normal: 1, normalDiv: 1 },
|
||
];
|
||
|
||
let _cachedTcTable: TreasureClassTable | undefined;
|
||
let _cachedAutoTcs: Map<string, AutoTcNode> | undefined;
|
||
|
||
/**
|
||
* Loads the default canonical 1.13c TreasureClassTable and merged auto-TCs.
|
||
*/
|
||
export function loadCanonicalTreasureClasses(): {
|
||
tcTable: TreasureClassTable;
|
||
autoTcs: Map<string, AutoTcNode>;
|
||
} {
|
||
if (_cachedTcTable && _cachedAutoTcs) {
|
||
return { tcTable: _cachedTcTable, autoTcs: _cachedAutoTcs };
|
||
}
|
||
const bytes = new TextEncoder().encode(CANONICAL_TC_EX_TXT);
|
||
const tcTable = parseTreasureClassTable(parseTable(bytes));
|
||
const autoTcs = new Map<string, AutoTcNode>();
|
||
for (const a of CANONICAL_AUTO_TCS_DATA) {
|
||
autoTcs.set(a.name, {
|
||
name: a.name,
|
||
group: 0,
|
||
level: a.level,
|
||
picks: a.picks as 1,
|
||
totalProb: a.totalProb,
|
||
entries: a.entries,
|
||
});
|
||
}
|
||
mergeAutoTreasureClasses(tcTable, autoTcs);
|
||
_cachedTcTable = tcTable;
|
||
_cachedAutoTcs = autoTcs;
|
||
return { tcTable, autoTcs };
|
||
}
|
||
|
||
// --- Interfaces & Calculation Helpers ----------------------------------------
|
||
|
||
export interface DirectProbabilities {
|
||
readonly tcName: string;
|
||
readonly picks: number;
|
||
readonly noDrop: number;
|
||
readonly totalWeight: number;
|
||
readonly probabilities: ReadonlyMap<string, number>;
|
||
}
|
||
|
||
export interface AnalyticItemDrop {
|
||
readonly item: string;
|
||
readonly name: string;
|
||
readonly singleProbability: number;
|
||
readonly compoundProbability: number;
|
||
readonly expectedDrops: number;
|
||
readonly oneInOdds: number;
|
||
readonly isGold: boolean;
|
||
readonly isRune: boolean;
|
||
}
|
||
|
||
export interface AnalyticTcResult {
|
||
readonly tcName: string;
|
||
readonly picks: number;
|
||
readonly effectivePlayers: number;
|
||
readonly noDropSingleProb: number;
|
||
readonly noDropCompoundProb: number;
|
||
readonly direct: ReadonlyMap<string, number>;
|
||
readonly leaves: readonly AnalyticItemDrop[];
|
||
readonly leafMap: ReadonlyMap<string, AnalyticItemDrop>;
|
||
}
|
||
|
||
export interface ReverseLookupEntry {
|
||
readonly tcName: string;
|
||
readonly picks: number;
|
||
readonly singleProbability: number;
|
||
readonly compoundProbability: number;
|
||
readonly oneInOdds: number;
|
||
}
|
||
|
||
export interface ReverseLookupResult {
|
||
readonly query: string;
|
||
readonly matchedCode: string;
|
||
readonly matchedName: string;
|
||
readonly entries: readonly ReverseLookupEntry[];
|
||
}
|
||
|
||
export interface QualityCounts {
|
||
normal: number;
|
||
superior: number;
|
||
magic: number;
|
||
rare: number;
|
||
set: number;
|
||
unique: number;
|
||
gold: number;
|
||
rune: number;
|
||
noDrop: number;
|
||
}
|
||
|
||
export interface DroppedItemSummary {
|
||
readonly code: string;
|
||
readonly name: string;
|
||
readonly quality: string;
|
||
readonly count: number;
|
||
readonly percentage: number;
|
||
}
|
||
|
||
export interface SimulationOptions {
|
||
readonly tcName: string;
|
||
readonly runs: number;
|
||
readonly gamePlayers?: number | undefined;
|
||
readonly partyPlayers?: number | undefined;
|
||
readonly magicFind?: number | undefined;
|
||
readonly difficulty?: 'normal' | 'nightmare' | 'hell' | undefined;
|
||
readonly isQuestDrop?: boolean | undefined;
|
||
readonly seed?: number | undefined;
|
||
readonly chunkSize?: number | undefined;
|
||
readonly tcTable?: TreasureClassTable | undefined;
|
||
readonly autoTcs?: Map<string, AutoTcNode> | undefined;
|
||
readonly itemRatioTable?: ItemRatioTable | undefined;
|
||
}
|
||
|
||
export interface SimulationProgress {
|
||
readonly completedRuns: number;
|
||
readonly totalRuns: number;
|
||
readonly itemsDropped: number;
|
||
readonly qualityCounts: QualityCounts;
|
||
readonly isFinished: boolean;
|
||
readonly isPaused: boolean;
|
||
}
|
||
|
||
export interface SimulationResult {
|
||
readonly totalRuns: number;
|
||
readonly itemsDropped: number;
|
||
readonly emptyRuns: number;
|
||
readonly averageDropsPerRun: number;
|
||
readonly qualityCounts: QualityCounts;
|
||
readonly itemSummaries: readonly DroppedItemSummary[];
|
||
}
|
||
|
||
/**
|
||
* Calculates compound probability 1 - (1 - p)^picks for picks >= 1.
|
||
* Guaranteed to be within [0, 1].
|
||
*/
|
||
export function calculateCompoundProbability(singleProbability: number, picks: number): number {
|
||
if (singleProbability <= 0) return 0;
|
||
if (singleProbability >= 1) return 1;
|
||
if (picks <= 0) return 1; // deterministic enumeration
|
||
if (picks === 1) return singleProbability;
|
||
const compound = 1 - Math.pow(1 - singleProbability, picks);
|
||
return Math.min(1, Math.max(0, compound));
|
||
}
|
||
|
||
/**
|
||
* Calculates direct 1-step probabilities of immediate children in a TreasureClass,
|
||
* including NoDrop and direct sub-TCs.
|
||
*/
|
||
export function calculateDirectProbabilities(
|
||
tcName: string,
|
||
options?: {
|
||
tcTable?: TreasureClassTable | undefined;
|
||
autoTcs?: Map<string, AutoTcNode> | undefined;
|
||
gamePlayers?: number | undefined;
|
||
partyPlayers?: number | undefined;
|
||
} | undefined,
|
||
): DirectProbabilities {
|
||
const table = options?.tcTable ?? loadCanonicalTreasureClasses().tcTable;
|
||
const autoMap = options?.autoTcs ?? loadCanonicalTreasureClasses().autoTcs;
|
||
let node: TreasureClassNode | undefined = table.get(tcName);
|
||
if (!node && autoMap.has(tcName)) {
|
||
node = autoTcToTreasureClassNode(autoMap.get(tcName)!);
|
||
}
|
||
|
||
if (!node) {
|
||
return {
|
||
tcName,
|
||
picks: 0,
|
||
noDrop: 0,
|
||
totalWeight: 0,
|
||
probabilities: new Map(),
|
||
};
|
||
}
|
||
|
||
const picks = node.picks ?? 1;
|
||
const probs = new Map<string, number>();
|
||
|
||
if (picks < 0) {
|
||
let sumWeights = 0;
|
||
for (const it of node.items) {
|
||
const prob = (it as any).prob ?? 0;
|
||
if (prob <= 0) continue;
|
||
sumWeights += prob;
|
||
const key = typeof it === 'string' ? it : it.item;
|
||
probs.set(key, (probs.get(key) ?? 0) + 1.0);
|
||
}
|
||
return {
|
||
tcName,
|
||
picks,
|
||
noDrop: 0,
|
||
totalWeight: sumWeights,
|
||
probabilities: probs,
|
||
};
|
||
}
|
||
|
||
const effectivePlayers = computeEffectivePlayers(options?.gamePlayers, options?.partyPlayers);
|
||
const baseNoDrop = node.noDrop ?? 0;
|
||
const totalProb = (node as any).totalProbExpansion ?? (node as any).totalProb ?? 0;
|
||
const scaledNoDrop = computeScaledNoDrop(baseNoDrop, totalProb, effectivePlayers);
|
||
const totalWeight = scaledNoDrop + totalProb;
|
||
|
||
if (totalWeight <= 0) {
|
||
return {
|
||
tcName,
|
||
picks,
|
||
noDrop: baseNoDrop,
|
||
totalWeight: 0,
|
||
probabilities: probs,
|
||
};
|
||
}
|
||
|
||
if (scaledNoDrop > 0) {
|
||
probs.set('NoDrop', scaledNoDrop / totalWeight);
|
||
}
|
||
|
||
for (const it of node.items) {
|
||
const prob = (it as any).prob ?? 0;
|
||
if (prob <= 0) continue;
|
||
const key = typeof it === 'string' ? it : it.item;
|
||
probs.set(key, (probs.get(key) ?? 0) + prob / totalWeight);
|
||
}
|
||
|
||
return {
|
||
tcName,
|
||
picks,
|
||
noDrop: scaledNoDrop,
|
||
totalWeight,
|
||
probabilities: probs,
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Recursively expands a TreasureClass tree to calculate exact leaf item probabilities.
|
||
*/
|
||
export function calculateAnalyticProbabilities(
|
||
tcName: string,
|
||
options?: {
|
||
tcTable?: TreasureClassTable | undefined;
|
||
autoTcs?: Map<string, AutoTcNode> | undefined;
|
||
gamePlayers?: number | undefined;
|
||
partyPlayers?: number | undefined;
|
||
isExpansion?: boolean | undefined;
|
||
} | undefined,
|
||
): AnalyticTcResult {
|
||
const table = options?.tcTable ?? loadCanonicalTreasureClasses().tcTable;
|
||
const autoMap = options?.autoTcs ?? loadCanonicalTreasureClasses().autoTcs;
|
||
let rootNode: TreasureClassNode | undefined = table.get(tcName);
|
||
if (!rootNode && autoMap.has(tcName)) {
|
||
rootNode = autoTcToTreasureClassNode(autoMap.get(tcName)!);
|
||
}
|
||
|
||
const directResult = calculateDirectProbabilities(tcName, options);
|
||
const effectivePlayers = computeEffectivePlayers(options?.gamePlayers, options?.partyPlayers);
|
||
|
||
if (!rootNode) {
|
||
return {
|
||
tcName,
|
||
picks: 0,
|
||
effectivePlayers,
|
||
noDropSingleProb: 1.0,
|
||
noDropCompoundProb: 1.0,
|
||
direct: directResult.probabilities,
|
||
leaves: [],
|
||
leafMap: new Map(),
|
||
};
|
||
}
|
||
|
||
const rootPicks = rootNode.picks ?? 1;
|
||
const leafSingleProb = new Map<string, number>();
|
||
let noDropSingleProb = 0;
|
||
|
||
function expandNode(name: string, probWeight: number, depth: number) {
|
||
if (probWeight <= 0 || depth > 32) return;
|
||
|
||
const tc = table.get(name);
|
||
if (tc) {
|
||
if (tc.picks < 0) {
|
||
for (const it of tc.items) {
|
||
const p = (it as any).prob ?? 0;
|
||
if (p <= 0) continue;
|
||
for (let k = 0; k < p; k++) {
|
||
expandNode(it.item, probWeight, depth + 1);
|
||
}
|
||
}
|
||
return;
|
||
}
|
||
|
||
const baseNoDrop = tc.noDrop ?? 0;
|
||
const totalProb = tc.totalProbExpansion ?? (tc as any).totalProb ?? 0;
|
||
const scaledNoDrop = computeScaledNoDrop(baseNoDrop, totalProb, effectivePlayers);
|
||
const totalWeight = scaledNoDrop + totalProb;
|
||
|
||
if (totalWeight <= 0) return;
|
||
|
||
if (scaledNoDrop > 0) {
|
||
const pNoDrop = (scaledNoDrop / totalWeight) * probWeight;
|
||
noDropSingleProb += pNoDrop;
|
||
}
|
||
|
||
for (const it of tc.items) {
|
||
const p = (it as any).prob ?? 0;
|
||
if (p <= 0) continue;
|
||
const branchProb = (p / totalWeight) * probWeight;
|
||
expandNode(it.item, branchProb, depth + 1);
|
||
}
|
||
return;
|
||
}
|
||
|
||
const autoNode = autoMap.get(name);
|
||
if (autoNode) {
|
||
const totalProb = autoNode.totalProb ?? 0;
|
||
if (totalProb <= 0) return;
|
||
for (const entry of autoNode.entries) {
|
||
const branchProb = (entry.prob / totalProb) * probWeight;
|
||
expandNode(entry.itemCode, branchProb, depth + 1);
|
||
}
|
||
return;
|
||
}
|
||
|
||
let leafCode = name.trim();
|
||
if (leafCode.startsWith('gld,mul=')) {
|
||
leafCode = 'gld';
|
||
}
|
||
leafSingleProb.set(leafCode, (leafSingleProb.get(leafCode) ?? 0) + probWeight);
|
||
}
|
||
|
||
expandNode(tcName, 1.0, 0);
|
||
|
||
const leaves: AnalyticItemDrop[] = [];
|
||
const leafMap = new Map<string, AnalyticItemDrop>();
|
||
|
||
for (const [code, pSingle] of leafSingleProb) {
|
||
const compound = rootPicks < 0 ? Math.min(1, pSingle) : calculateCompoundProbability(pSingle, rootPicks);
|
||
const expected = (rootPicks < 0 ? 1 : rootPicks) * pSingle;
|
||
const odds = compound > 0 ? 1 / compound : Infinity;
|
||
const isGold = code === 'gld';
|
||
const isRune = /^r(?:0[1-9]|[12]\d|3[0-3])$/.test(code);
|
||
const name = CANONICAL_ITEM_NAMES[code] ?? code;
|
||
|
||
const itemDrop: AnalyticItemDrop = {
|
||
item: code,
|
||
name,
|
||
singleProbability: pSingle,
|
||
compoundProbability: compound,
|
||
expectedDrops: expected,
|
||
oneInOdds: odds,
|
||
isGold,
|
||
isRune,
|
||
};
|
||
leaves.push(itemDrop);
|
||
leafMap.set(code, itemDrop);
|
||
}
|
||
|
||
leaves.sort((a, b) => b.compoundProbability - a.compoundProbability);
|
||
|
||
const noDropCompoundProb = rootPicks < 0 ? 0 : Math.pow(Math.min(1, Math.max(0, noDropSingleProb)), rootPicks);
|
||
|
||
return {
|
||
tcName,
|
||
picks: rootPicks,
|
||
effectivePlayers,
|
||
noDropSingleProb,
|
||
noDropCompoundProb,
|
||
direct: directResult.probabilities,
|
||
leaves,
|
||
leafMap,
|
||
};
|
||
}
|
||
|
||
/**
|
||
* Builds reverse lookup index mapping item code to all dropping TreasureClasses.
|
||
*/
|
||
export function buildReverseLookupIndex(
|
||
tcTable: TreasureClassTable,
|
||
autoTcs?: Map<string, AutoTcNode> | undefined,
|
||
options?: { gamePlayers?: number | undefined; partyPlayers?: number | undefined } | undefined,
|
||
): Map<string, ReverseLookupEntry[]> {
|
||
const autoMap = autoTcs ?? loadCanonicalTreasureClasses().autoTcs;
|
||
const index = new Map<string, ReverseLookupEntry[]>();
|
||
|
||
for (const tc of tcTable.all) {
|
||
const result = calculateAnalyticProbabilities(tc.name, {
|
||
tcTable,
|
||
autoTcs: autoMap,
|
||
...(options?.gamePlayers !== undefined ? { gamePlayers: options.gamePlayers } : {}),
|
||
...(options?.partyPlayers !== undefined ? { partyPlayers: options.partyPlayers } : {}),
|
||
});
|
||
|
||
for (const leaf of result.leaves) {
|
||
if (leaf.item === 'NoDrop') continue;
|
||
let list = index.get(leaf.item);
|
||
if (!list) {
|
||
list = [];
|
||
index.set(leaf.item, list);
|
||
}
|
||
list.push({
|
||
tcName: tc.name,
|
||
picks: tc.picks,
|
||
singleProbability: leaf.singleProbability,
|
||
compoundProbability: leaf.compoundProbability,
|
||
oneInOdds: leaf.oneInOdds,
|
||
});
|
||
}
|
||
}
|
||
|
||
for (const list of index.values()) {
|
||
list.sort((a, b) => b.compoundProbability - a.compoundProbability);
|
||
}
|
||
|
||
return index;
|
||
}
|
||
|
||
/**
|
||
* Performs reverse lookup query for an item code or name.
|
||
*/
|
||
export function reverseLookup(
|
||
index: Map<string, ReverseLookupEntry[]>,
|
||
query: string,
|
||
itemNames?: Record<string, string>,
|
||
): ReverseLookupResult[] {
|
||
const names = itemNames ?? CANONICAL_ITEM_NAMES;
|
||
const q = query.trim().toLowerCase();
|
||
if (!q) return [];
|
||
|
||
const matchedCodes = new Set<string>();
|
||
|
||
if (index.has(q)) {
|
||
matchedCodes.add(q);
|
||
}
|
||
|
||
for (const [code, name] of Object.entries(names)) {
|
||
const lowerName = name.toLowerCase();
|
||
if (code.toLowerCase() === q || lowerName.includes(q)) {
|
||
if (index.has(code)) {
|
||
matchedCodes.add(code);
|
||
}
|
||
}
|
||
}
|
||
|
||
if (q === 'shako' && index.has('uap')) matchedCodes.add('uap');
|
||
if (q === 'zod' && index.has('r33')) matchedCodes.add('r33');
|
||
if (q === 'ber' && index.has('r30')) matchedCodes.add('r30');
|
||
if (q === 'jah' && index.has('r31')) matchedCodes.add('r31');
|
||
if (q === 'soj' && index.has('rin')) matchedCodes.add('rin');
|
||
|
||
const results: ReverseLookupResult[] = [];
|
||
for (const code of matchedCodes) {
|
||
const entries = index.get(code) ?? [];
|
||
results.push({
|
||
query,
|
||
matchedCode: code,
|
||
matchedName: names[code] ?? code,
|
||
entries,
|
||
});
|
||
}
|
||
|
||
return results;
|
||
}
|
||
|
||
const QUALITY_RANK: Record<string, number> = {
|
||
unique: 6,
|
||
set: 5,
|
||
rare: 4,
|
||
magic: 3,
|
||
superior: 2,
|
||
normal: 1,
|
||
gold: 0,
|
||
rune: 7,
|
||
};
|
||
|
||
export async function runMonteCarloSimulation(
|
||
options: SimulationOptions,
|
||
onProgress?: (progress: SimulationProgress) => void | Promise<void>,
|
||
): Promise<SimulationResult> {
|
||
const tcTable = options.tcTable ?? loadCanonicalTreasureClasses().tcTable;
|
||
const autoTcs = options.autoTcs ?? loadCanonicalTreasureClasses().autoTcs;
|
||
if (options.tcTable && options.autoTcs) {
|
||
mergeAutoTreasureClasses(tcTable, autoTcs);
|
||
}
|
||
const itemRatio = options.itemRatioTable ?? createItemRatioTable(CANONICAL_ITEM_RATIO_ROWS);
|
||
const ratioRow = itemRatio.getRow(1, 0, 0) ?? CANONICAL_ITEM_RATIO_ROWS[2]!;
|
||
|
||
let effectiveTcName = options.tcName;
|
||
if (options.isQuestDrop) {
|
||
const questTc = effectiveTcName.replace(/^(Andariel|Duriel|Mephisto|Diablo|Baal)(.*)$/, '$1q$2');
|
||
if (tcTable.get(questTc)) {
|
||
effectiveTcName = questTc;
|
||
}
|
||
}
|
||
|
||
// Critical fix: When seed is undefined or 0, initialize with non-zero pseudorandom 32-bit integer
|
||
// to avoid D2 LCG (0 * multiplier + 0 = 0) permanent zero lock.
|
||
const initialSeed = (options.seed !== undefined && options.seed !== 0)
|
||
? options.seed
|
||
: ((Math.floor(Math.random() * 0x7fffffff) + 1) >>> 0);
|
||
const rng = new D2Rng(initialSeed);
|
||
const totalRuns = options.runs;
|
||
const chunkSize = options.chunkSize ?? Math.max(100, Math.min(5000, Math.floor(totalRuns / 20)));
|
||
|
||
const qualityCounts: QualityCounts = {
|
||
normal: 0,
|
||
superior: 0,
|
||
magic: 0,
|
||
rare: 0,
|
||
set: 0,
|
||
unique: 0,
|
||
gold: 0,
|
||
rune: 0,
|
||
noDrop: 0,
|
||
};
|
||
|
||
const itemCounts = new Map<string, { count: number; quality: string }>();
|
||
let totalDropped = 0;
|
||
let emptyRuns = 0;
|
||
|
||
let mlvl = 85;
|
||
if (options.difficulty === 'normal') mlvl = 20;
|
||
else if (options.difficulty === 'nightmare') mlvl = 55;
|
||
|
||
let completedRuns = 0;
|
||
|
||
while (completedRuns < totalRuns) {
|
||
const currentChunk = Math.min(chunkSize, totalRuns - completedRuns);
|
||
|
||
for (let i = 0; i < currentChunk; i++) {
|
||
const drops = rollTreasureClass(effectiveTcName, {
|
||
rng,
|
||
tcTable,
|
||
gamePlayers: options.gamePlayers ?? 1,
|
||
partyPlayers: options.partyPlayers ?? 1,
|
||
isExpansion: true,
|
||
});
|
||
|
||
if (drops.length === 0) {
|
||
emptyRuns++;
|
||
qualityCounts.noDrop++;
|
||
continue;
|
||
}
|
||
|
||
for (const drop of drops) {
|
||
totalDropped++;
|
||
const code = drop.code;
|
||
let quality = 'normal';
|
||
|
||
if (drop.isGold) {
|
||
quality = 'gold';
|
||
qualityCounts.gold++;
|
||
} else if (/^r(?:0[1-9]|[12]\d|3[0-3])$/.test(code)) {
|
||
quality = 'rune';
|
||
qualityCounts.rune++;
|
||
} else if (drop.forcedUnique) {
|
||
quality = 'unique';
|
||
qualityCounts.unique++;
|
||
} else if (drop.forcedSet) {
|
||
quality = 'set';
|
||
qualityCounts.set++;
|
||
} else {
|
||
const tier = rollItemQuality({
|
||
ilvl: mlvl,
|
||
qlvl: 10,
|
||
magicFind: options.magicFind ?? 0,
|
||
row: ratioRow,
|
||
tcFactors: {
|
||
unique: drop.qualityFactors[0],
|
||
set: drop.qualityFactors[1],
|
||
rare: drop.qualityFactors[2],
|
||
magic: drop.qualityFactors[3],
|
||
},
|
||
rng,
|
||
});
|
||
quality = tier === 'low' ? 'normal' : tier;
|
||
if (quality === 'unique') qualityCounts.unique++;
|
||
else if (quality === 'set') qualityCounts.set++;
|
||
else if (quality === 'rare') qualityCounts.rare++;
|
||
else if (quality === 'magic') qualityCounts.magic++;
|
||
else if (quality === 'superior') qualityCounts.superior++;
|
||
else qualityCounts.normal++;
|
||
}
|
||
|
||
const existing = itemCounts.get(code);
|
||
if (existing) {
|
||
existing.count++;
|
||
if ((QUALITY_RANK[quality] ?? 0) > (QUALITY_RANK[existing.quality] ?? 0)) {
|
||
existing.quality = quality;
|
||
}
|
||
} else {
|
||
itemCounts.set(code, { count: 1, quality });
|
||
}
|
||
}
|
||
}
|
||
|
||
completedRuns += currentChunk;
|
||
|
||
if (onProgress) {
|
||
await onProgress({
|
||
completedRuns,
|
||
totalRuns,
|
||
itemsDropped: totalDropped,
|
||
qualityCounts: { ...qualityCounts },
|
||
isFinished: completedRuns >= totalRuns,
|
||
isPaused: false,
|
||
});
|
||
await new Promise(r => setTimeout(r, 0));
|
||
}
|
||
}
|
||
|
||
const itemSummaries: DroppedItemSummary[] = [];
|
||
for (const [code, data] of itemCounts) {
|
||
itemSummaries.push({
|
||
code,
|
||
name: CANONICAL_ITEM_NAMES[code] ?? code,
|
||
quality: data.quality,
|
||
count: data.count,
|
||
percentage: (data.count / totalRuns) * 100,
|
||
});
|
||
}
|
||
itemSummaries.sort((a, b) => b.count - a.count);
|
||
|
||
return {
|
||
totalRuns,
|
||
itemsDropped: totalDropped,
|
||
emptyRuns,
|
||
averageDropsPerRun: totalRuns > 0 ? totalDropped / totalRuns : 0,
|
||
qualityCounts,
|
||
itemSummaries,
|
||
};
|
||
}
|
||
|
||
// --- Maxroll-Inspired Monster Selector & Rich Item Presentation --------------
|
||
|
||
export type MonsterCategory = 'boss' | 'superunique' | 'farm' | 'chest' | 'normal';
|
||
|
||
export interface MonsterPreset {
|
||
readonly id: string;
|
||
readonly nameCn: string;
|
||
readonly nameEn: string;
|
||
readonly category: MonsterCategory;
|
||
readonly act: 1 | 2 | 3 | 4 | 5;
|
||
readonly areaCn: string;
|
||
readonly areaEn: string;
|
||
readonly mlvl: { normal: number; nightmare: number; hell: number };
|
||
readonly tc: { normal: string; nightmare: string; hell: string };
|
||
readonly questTc?: { normal: string; nightmare: string; hell: string };
|
||
readonly picks: number;
|
||
readonly baseNoDrop: number;
|
||
readonly icon: string;
|
||
readonly descCn: string;
|
||
}
|
||
|
||
export const MONSTER_PRESETS: readonly MonsterPreset[] = [
|
||
// --- Act Bosses ---
|
||
{
|
||
id: 'andariel',
|
||
nameCn: '安达利尔 (Andariel)',
|
||
nameEn: 'Maiden of Anguish',
|
||
category: 'boss',
|
||
act: 1,
|
||
areaCn: '地下墓穴第四层 (Catacombs L4)',
|
||
areaEn: 'Catacombs Level 4',
|
||
mlvl: { normal: 12, nightmare: 49, hell: 75 },
|
||
tc: { normal: 'Andariel', nightmare: 'Andariel (N)', hell: 'Andariel (H)' },
|
||
questTc: { normal: 'Andarielq', nightmare: 'Andarielq (N)', hell: 'Andarielq (H)' },
|
||
picks: 7,
|
||
baseNoDrop: 19,
|
||
icon: '🕷️',
|
||
descCn: '第一幕关底首领,弱火(-50%火抗),Bug首杀热门目标,乔丹之石 (SOJ) 与暗金首饰核心掉落源。',
|
||
},
|
||
{
|
||
id: 'duriel',
|
||
nameCn: '督瑞尔 (Duriel)',
|
||
nameEn: 'Lord of Pain',
|
||
category: 'boss',
|
||
act: 2,
|
||
areaCn: '塔·拉夏的古墓 (Tal Rasha Chamber)',
|
||
areaEn: "Tal Rasha's Chamber",
|
||
mlvl: { normal: 22, nightmare: 55, hell: 88 },
|
||
tc: { normal: 'Duriel', nightmare: 'Duriel (N)', hell: 'Duriel (H)' },
|
||
questTc: { normal: 'Durielq', nightmare: 'Durielq (N)', hell: 'Durielq (H)' },
|
||
picks: 7,
|
||
baseNoDrop: 19,
|
||
icon: '🐛',
|
||
descCn: '第二幕关底首领,神圣冰冻光环,回城卷轴与日用品暗金出处。',
|
||
},
|
||
{
|
||
id: 'mephisto',
|
||
nameCn: '墨菲斯托 (Mephisto)',
|
||
nameEn: 'Lord of Hatred',
|
||
category: 'boss',
|
||
act: 3,
|
||
areaCn: '憎恨囚牢第三层 (Durance of Hate L3)',
|
||
areaEn: 'Durance of Hate Level 3',
|
||
mlvl: { normal: 26, nightmare: 59, hell: 87 },
|
||
tc: { normal: 'Mephisto', nightmare: 'Mephisto (N)', hell: 'Mephisto (H)' },
|
||
questTc: { normal: 'Mephistoq', nightmare: 'Mephistoq (N)', hell: 'Mephistoq (H)' },
|
||
picks: 7,
|
||
baseNoDrop: 15,
|
||
icon: '💀',
|
||
descCn: '第三幕关底首领,全游戏刷军帽、暴风之盾、眼球、海蛇皮等中高级暗金最高效目标。',
|
||
},
|
||
{
|
||
id: 'diablo',
|
||
nameCn: '暗黑破坏神 (Diablo)',
|
||
nameEn: 'Lord of Terror',
|
||
category: 'boss',
|
||
act: 4,
|
||
areaCn: '混沌避难所 (Chaos Sanctuary)',
|
||
areaEn: 'Chaos Sanctuary',
|
||
mlvl: { normal: 40, nightmare: 62, hell: 94 },
|
||
tc: { normal: 'Diablo', nightmare: 'Diablo (N)', hell: 'Diablo (H)' },
|
||
questTc: { normal: 'Diabloq', nightmare: 'Diabloq (N)', hell: 'Diabloq (H)' },
|
||
picks: 7,
|
||
baseNoDrop: 15,
|
||
icon: '👹',
|
||
descCn: '第四幕关底首领,红色闪电地狱火,mlvl高达94,掉落大君之怒、马拉等顶级首饰。',
|
||
},
|
||
{
|
||
id: 'baal',
|
||
nameCn: '巴尔 (Baal)',
|
||
nameEn: 'Lord of Destruction',
|
||
category: 'boss',
|
||
act: 5,
|
||
areaCn: '世界之石大厅 (Worldstone Chamber)',
|
||
areaEn: 'Worldstone Chamber',
|
||
mlvl: { normal: 60, nightmare: 75, hell: 99 },
|
||
tc: { normal: 'Baal', nightmare: 'Baal (N)', hell: 'Baal (H)' },
|
||
questTc: { normal: 'Baalq', nightmare: 'Baalq (N)', hell: 'Baalq (H)' },
|
||
picks: 7,
|
||
baseNoDrop: 15,
|
||
icon: '👿',
|
||
descCn: '第五幕关底终极首领,全游戏最高等级(mlvl 99),TC 87全解锁,可掉落全游戏所有暗金底模。',
|
||
},
|
||
|
||
// --- Superuniques ---
|
||
{
|
||
id: 'countess',
|
||
nameCn: '女伯爵 (The Countess)',
|
||
nameEn: 'The Countess',
|
||
category: 'superunique',
|
||
act: 1,
|
||
areaCn: '遗忘之塔第五层 (Tower Cellar L5)',
|
||
areaEn: 'Tower Cellar Level 5',
|
||
mlvl: { normal: 12, nightmare: 45, hell: 82 },
|
||
tc: { normal: 'Countess', nightmare: 'Countess (N)', hell: 'Countess (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '🏰',
|
||
descCn: '符文之王,拥有独立符文特殊掉落池(最高掉落28#罗),掉落1#恐惧之钥 (Key of Terror)。',
|
||
},
|
||
{
|
||
id: 'summoner',
|
||
nameCn: '召唤者 (The Summoner)',
|
||
nameEn: 'The Summoner',
|
||
category: 'superunique',
|
||
act: 2,
|
||
areaCn: '神秘避难所 (Arcane Sanctuary)',
|
||
areaEn: 'Arcane Sanctuary',
|
||
mlvl: { normal: 18, nightmare: 55, hell: 80 },
|
||
tc: { normal: 'Summoner', nightmare: 'Summoner (N)', hell: 'Summoner (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '🔮',
|
||
descCn: '神秘避难所尽头守护者,赫拉迪克真理追寻者,掉落2#憎恨之钥 (Key of Hate)。',
|
||
},
|
||
{
|
||
id: 'nihlathak',
|
||
nameCn: '尼拉塞克 (Nihlathak)',
|
||
nameEn: 'Nihlathak',
|
||
category: 'superunique',
|
||
act: 5,
|
||
areaCn: '瓦特之厅 (Halls of Vaught)',
|
||
areaEn: 'Halls of Vaught',
|
||
mlvl: { normal: 65, nightmare: 70, hell: 95 },
|
||
tc: { normal: 'Nihlathak', nightmare: 'Nihlathak (N)', hell: 'Nihlathak (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '☠️',
|
||
descCn: '哈洛加斯背叛者,极速尸体爆炸致命,mlvl高达95,掉落3#毁灭之钥 (Key of Destruction)。',
|
||
},
|
||
{
|
||
id: 'pindleskin',
|
||
nameCn: '暴躁外皮 / 皮叔 (Pindleskin)',
|
||
nameEn: 'Pindleskin',
|
||
category: 'superunique',
|
||
act: 5,
|
||
areaCn: '尼拉塞克神殿红门 (Nihlathak Temple)',
|
||
areaEn: "Nihlathak's Temple",
|
||
mlvl: { normal: 68, nightmare: 73, hell: 86 },
|
||
tc: { normal: 'Act 5 Super Ax', nightmare: 'Act 5 (N) Super Ax', hell: 'Act 5 (H) Super Cx' },
|
||
picks: 2,
|
||
baseNoDrop: 0,
|
||
icon: '🧟',
|
||
descCn: '红门十五秒速刷首选,除了泰瑞尔之力、蜘蛛之网等少数外可出几乎一切暗金。',
|
||
},
|
||
{
|
||
id: 'council',
|
||
nameCn: '崔凡克最高议会 (Travincal Council)',
|
||
nameEn: 'High Council',
|
||
category: 'superunique',
|
||
act: 3,
|
||
areaCn: '崔凡克神殿 (Travincal)',
|
||
areaEn: 'Travincal',
|
||
mlvl: { normal: 28, nightmare: 57, hell: 85 },
|
||
tc: { normal: 'Council', nightmare: 'Council (N)', hell: 'Council (H)' },
|
||
picks: 3,
|
||
baseNoDrop: 19,
|
||
icon: '🪙',
|
||
descCn: '瘸子群,打钱野蛮人圣地,极高的高级符文(最高至33#萨德)产出率。',
|
||
},
|
||
{
|
||
id: 'shenk_eldritch',
|
||
nameCn: '督军山克与亚瑞克 (Shenk & Eldritch)',
|
||
nameEn: 'Shenk & Eldritch',
|
||
category: 'superunique',
|
||
act: 5,
|
||
areaCn: '冰冻高地小站 (Frigid Highlands)',
|
||
areaEn: 'Frigid Highlands',
|
||
mlvl: { normal: 65, nightmare: 71, hell: 84 },
|
||
tc: { normal: 'Act 5 Super A', nightmare: 'Act 5 (N) Super A', hell: 'Act 5 (H) Super Cx' },
|
||
picks: 2,
|
||
baseNoDrop: 0,
|
||
icon: '⚔️',
|
||
descCn: '冰冻高地小站上下两侧,出门即打,起步速刷固定暗金怪双雄。',
|
||
},
|
||
{
|
||
id: 'cow_king',
|
||
nameCn: '母牛之王 / 牛王 (Cow King)',
|
||
nameEn: 'The Cow King',
|
||
category: 'superunique',
|
||
act: 1,
|
||
areaCn: '秘密母牛关 (Secret Cow Level)',
|
||
areaEn: 'The Secret Cow Level',
|
||
mlvl: { normal: 31, nightmare: 67, hell: 84 },
|
||
tc: { normal: 'Cow King', nightmare: 'Cow King (N)', hell: 'Cow King (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '🐮',
|
||
descCn: '母牛之王,掉落牛王皮靴、牛王生皮、牛王之角专属套装。',
|
||
},
|
||
{
|
||
id: 'radament',
|
||
nameCn: '罗达门特 (Radament)',
|
||
nameEn: 'Radament',
|
||
category: 'superunique',
|
||
act: 2,
|
||
areaCn: '下水道第三层 (Sewers L3)',
|
||
areaEn: 'Sewers Level 3',
|
||
mlvl: { normal: 16, nightmare: 49, hell: 83 },
|
||
tc: { normal: 'Radament', nightmare: 'Radament (N)', hell: 'Radament (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '📜',
|
||
descCn: '复活木乃伊群首领,技能之书任务目标。',
|
||
},
|
||
{
|
||
id: 'izual',
|
||
nameCn: '衣卒尔 (Izual)',
|
||
nameEn: 'Izual',
|
||
category: 'superunique',
|
||
act: 4,
|
||
areaCn: '绝望平原 (Plains of Despair)',
|
||
areaEn: 'Plains of Despair',
|
||
mlvl: { normal: 29, nightmare: 60, hell: 86 },
|
||
tc: { normal: 'Izual', nightmare: 'Izual (N)', hell: 'Izual (H)' },
|
||
picks: 5,
|
||
baseNoDrop: 19,
|
||
icon: '👼',
|
||
descCn: '被诅咒的堕落天使,击杀奖励2点珍贵技能点。',
|
||
},
|
||
{
|
||
id: 'hephasto',
|
||
nameCn: '海法斯特盔甲制作者 (Hephasto)',
|
||
nameEn: 'Hephasto the Armorer',
|
||
category: 'superunique',
|
||
act: 4,
|
||
areaCn: '地狱熔炉 (River of Flame)',
|
||
areaEn: 'River of Flame',
|
||
mlvl: { normal: 28, nightmare: 59, hell: 88 },
|
||
tc: { normal: 'Act 4 Super C', nightmare: 'Act 4 (N) Super C', hell: 'Act 4 (H) Super C' },
|
||
picks: 2,
|
||
baseNoDrop: 0,
|
||
icon: '⚒️',
|
||
descCn: '地狱熔炉铁锤守护者,极高物理攻击与狂热灵气。',
|
||
},
|
||
|
||
// --- Farming Areas ---
|
||
{
|
||
id: 'cows',
|
||
nameCn: '秘密母牛关 母牛群 (Hell Bovine)',
|
||
nameEn: 'Hell Bovine',
|
||
category: 'farm',
|
||
act: 1,
|
||
areaCn: '秘密母牛关 (Secret Cow Level)',
|
||
areaEn: 'The Secret Cow Level',
|
||
mlvl: { normal: 28, nightmare: 64, hell: 81 },
|
||
tc: { normal: 'Cow', nightmare: 'Cow (N)', hell: 'Cow (H)' },
|
||
picks: 1,
|
||
baseNoDrop: 100,
|
||
icon: '🐄',
|
||
descCn: '超大密度怪物群,标马与尸爆死灵最爱,极佳的符文之语白色底模与高级符文出产地。',
|
||
},
|
||
{
|
||
id: 'wraith_farm',
|
||
nameCn: '幽灵怪 / 恶灵 / 鬼火 (Ghosts & Wraiths)',
|
||
nameEn: 'Ghosts & Wraiths',
|
||
category: 'farm',
|
||
act: 2,
|
||
areaCn: '神秘避难所 / 世界之石要塞',
|
||
areaEn: 'Arcane Sanctuary & Worldstone',
|
||
mlvl: { normal: 15, nightmare: 45, hell: 83 },
|
||
tc: { normal: 'Act 1 Wraith A', nightmare: 'Act 3 (N) Wraith C', hell: 'Act 5 (H) Wraith C' },
|
||
picks: 1,
|
||
baseNoDrop: 100,
|
||
icon: '👻',
|
||
descCn: '物理免疫浮空怪,剔除了绝大部分普通装备杂质,高级符文产出期望比常规小怪高约3.5倍!',
|
||
},
|
||
{
|
||
id: 'pit_unique',
|
||
nameCn: '85级场景 随机暗金首领 (Level 85 Area Unique)',
|
||
nameEn: 'Level 85 Area Boss',
|
||
category: 'farm',
|
||
act: 1,
|
||
areaCn: '地穴 / 古代通道 / 混沌避难所',
|
||
areaEn: 'The Pit, Ancient Tunnels, Chaos',
|
||
mlvl: { normal: 20, nightmare: 60, hell: 88 },
|
||
tc: { normal: 'Act 5 Unique A', nightmare: 'Act 5 (N) Unique A', hell: 'Act 5 (H) Unique C' },
|
||
picks: 2,
|
||
baseNoDrop: 0,
|
||
icon: '👑',
|
||
descCn: 'TC 87 全解锁,mlvl 88,可以掉落全游戏包括风之力、格利风之眼在内的所有暗金神器。',
|
||
},
|
||
{
|
||
id: 'pit_champion',
|
||
nameCn: '85级场景 冠军蓝怪 (Level 85 Area Champion)',
|
||
nameEn: 'Level 85 Area Champion',
|
||
category: 'farm',
|
||
act: 1,
|
||
areaCn: '地穴 / 古代通道 / 混沌避难所',
|
||
areaEn: 'Level 85 Zones',
|
||
mlvl: { normal: 19, nightmare: 59, hell: 87 },
|
||
tc: { normal: 'Act 5 Champ A', nightmare: 'Act 5 (N) Champ A', hell: 'Act 5 (H) Champ C' },
|
||
picks: -2,
|
||
baseNoDrop: 0,
|
||
icon: '🔷',
|
||
descCn: '85场景蓝怪小队,确定性掉落2次,丰厚经验值与高级底模出产地。',
|
||
},
|
||
|
||
// --- Chests ---
|
||
{
|
||
id: 'lk_superchests',
|
||
nameCn: '库拉斯特下层 超级宝箱 (LK Superchests)',
|
||
nameEn: 'LK Superchests',
|
||
category: 'chest',
|
||
act: 3,
|
||
areaCn: '库拉斯特下层 (Lower Kurast)',
|
||
areaEn: 'Lower Kurast',
|
||
mlvl: { normal: 22, nightmare: 52, hell: 80 },
|
||
tc: { normal: 'Act 3 Chest A', nightmare: 'Act 3 (N) Chest C', hell: 'Act 3 (H) Chest C' },
|
||
picks: 4,
|
||
baseNoDrop: 100,
|
||
icon: '📦',
|
||
descCn: '著名LK双营火6箱子速开,单人模式下高级符文(最高至30#贝)与技能大板的最高效出处。',
|
||
},
|
||
|
||
// --- Normal Mobs ---
|
||
{
|
||
id: 'act1_h2h',
|
||
nameCn: '第一幕 近战小怪 (Act 1 Melee)',
|
||
nameEn: 'Act 1 Fallen / Zombie',
|
||
category: 'normal',
|
||
act: 1,
|
||
areaCn: '鲜血荒地至修道院',
|
||
areaEn: 'Blood Moor to Monastery',
|
||
mlvl: { normal: 3, nightmare: 38, hell: 68 },
|
||
tc: { normal: 'Act 1 H2H A', nightmare: 'Act 1 (N) H2H A', hell: 'Act 1 (H) H2H A' },
|
||
picks: 1,
|
||
baseNoDrop: 100,
|
||
icon: '🗡️',
|
||
descCn: '沉沦魔、僵尸等第一幕近战小怪基准掉落。',
|
||
},
|
||
{
|
||
id: 'act5_h2h',
|
||
nameCn: '第五幕 近战小怪 (Act 5 Melee)',
|
||
nameEn: 'Act 5 Minions',
|
||
category: 'normal',
|
||
act: 5,
|
||
areaCn: '毁灭王座与世界之石要塞',
|
||
areaEn: 'Worldstone Keep',
|
||
mlvl: { normal: 36, nightmare: 62, hell: 85 },
|
||
tc: { normal: 'Act 5 H2H C', nightmare: 'Act 5 (N) H2H C', hell: 'Act 5 (H) H2H C' },
|
||
picks: 1,
|
||
baseNoDrop: 100,
|
||
icon: '🛡️',
|
||
descCn: '第五幕毁灭王座强力近战小怪基准掉落。',
|
||
},
|
||
];
|
||
|
||
/**
|
||
* Resolves the effective TreasureClass name for a given monster preset, difficulty, and quest drop status.
|
||
* If customOverride is provided, customOverride takes precedence.
|
||
*/
|
||
export function getMonsterPresetTc(
|
||
monster: MonsterPreset,
|
||
difficulty: 'normal' | 'nightmare' | 'hell',
|
||
quest: boolean = false,
|
||
customOverride?: string | null,
|
||
): string {
|
||
if (customOverride && customOverride.trim()) {
|
||
return customOverride.trim();
|
||
}
|
||
if (quest && monster.questTc) {
|
||
return monster.questTc[difficulty];
|
||
}
|
||
return monster.tc[difficulty];
|
||
}
|
||
|
||
export type ItemCategoryFilter = 'all' | 'unique' | 'set' | 'rune' | 'base' | 'charm_gem' | 'misc';
|
||
|
||
export const FAMOUS_ITEMS_META: Readonly<Record<string, { famousTitle: string; itemTypeCn: string; qlvl?: number }>> = {
|
||
uap: { famousTitle: '谐角之冠 (Harlequin Crest) · 军帽', itemTypeCn: '防具 · 头盔', qlvl: 69 },
|
||
uit: { famousTitle: '暴风之盾 (Stormshield) · 统御者大盾', itemTypeCn: '防具 · 盾牌', qlvl: 77 },
|
||
ci3: { famousTitle: "格利风之眼 (Griffon's Eye) · 权冠", itemTypeCn: '防具 · 头环', qlvl: 85 },
|
||
ci2: { famousTitle: "奇拉的守护 (Kira's Guardian) · 头饰", itemTypeCn: '防具 · 头环', qlvl: 77 },
|
||
utp: { famousTitle: '执政官铠甲 · 极品谜团/刚毅轻甲底模', itemTypeCn: '防具 · 铠甲', qlvl: 84 },
|
||
xtp: { famousTitle: '法师铠甲 · 主流3孔谜团底模', itemTypeCn: '防具 · 铠甲', qlvl: 60 },
|
||
uar: { famousTitle: "泰瑞尔之力 (Tyrael's Might) · 最稀有暗金", itemTypeCn: '防具 · 重甲', qlvl: 87 },
|
||
xea: { famousTitle: '蛇魔法师之皮 (Skin of the Vipermagi) · 海蛇皮', itemTypeCn: '防具 · 铠甲', qlvl: 37 },
|
||
xsk: { famousTitle: "塔·拉夏的赫拉迪克纹章 · 死亡面具", itemTypeCn: '防具 · 头盔', qlvl: 42 },
|
||
xui: { famousTitle: "诗寇蒂的愤怒 (Skullder's Ire) · 幽灵战甲", itemTypeCn: '防具 · 铠甲', qlvl: 50 },
|
||
urn: { famousTitle: '年纪之冠 (Crown of Ages) · 日冕之冠', itemTypeCn: '防具 · 头盔', qlvl: 86 },
|
||
ulc: { famousTitle: '蜘蛛之网 (Arachnid Mesh) · 蛛网腰带 (技能腰)', itemTypeCn: '防具 · 腰带', qlvl: 87 },
|
||
umc: { famousTitle: "维尔登戈的心结 (Verdungo's Hearty Cord) · 秘银腰带", itemTypeCn: '防具 · 腰带', qlvl: 71 },
|
||
xtb: { famousTitle: '战争之旅 (War Traveler) · 战旅50MF打宝靴', itemTypeCn: '防具 · 靴子', qlvl: 50 },
|
||
xhb: { famousTitle: '蚀肉骑士 (Gore Rider) · 骑士靴 (CB/DS/OW)', itemTypeCn: '防具 · 靴子', qlvl: 55 },
|
||
uvb: { famousTitle: '沙暴之旅 (Sandstorm Trek) · 蛛网之靴', itemTypeCn: '防具 · 靴子', qlvl: 74 },
|
||
umb: { famousTitle: '骨髓行走 (Marrowwalk) · 骸骨之靴', itemTypeCn: '防具 · 靴子', qlvl: 74 },
|
||
tgl: { famousTitle: '法师之拳 (Magefist) · 轻型铁手套 (20FCR)', itemTypeCn: '防具 · 手套', qlvl: 31 },
|
||
'7cr': { famousTitle: '碧蓝怒火 / 悔恨/最后希望 极品幻化之刃底模', itemTypeCn: '武器 · 单手剑', qlvl: 73 },
|
||
'7wa': { famousTitle: '狂战士斧 · 死亡之刀 / 悔恨/野兽顶级底模', itemTypeCn: '武器 · 单手斧', qlvl: 86 },
|
||
'7pa': { famousTitle: '神秘之斧 · 佣兵眼光/无限 极品长柄底模', itemTypeCn: '武器 · 长柄武器', qlvl: 79 },
|
||
'7vo': { famousTitle: '巨神之斧 · 必出4孔 佣兵眼光/无限底模', itemTypeCn: '武器 · 长柄武器', qlvl: 84 },
|
||
'7s8': { famousTitle: "死神的丧钟 (The Reaper's Toll) · 锐利之斧", itemTypeCn: '武器 · 长柄武器', qlvl: 71 },
|
||
'7wc': { famousTitle: '巨神长柄斧 · 攻速底模', itemTypeCn: '武器 · 长柄武器', qlvl: 86 },
|
||
amc: { famousTitle: '大院长之弓 · +3技能 信心 (Faith) 毕业底模', itemTypeCn: '武器 · 亚马逊弓', qlvl: 78 },
|
||
'6lw': { famousTitle: '风之力 (Windforce) · 九头蛇弓', itemTypeCn: '武器 · 弓', qlvl: 85 },
|
||
oba: { famousTitle: '眼球 (The Oculus) · 涡流水晶', itemTypeCn: '武器 · 法师球', qlvl: 50 },
|
||
obf: { famousTitle: "死亡深度 (Death's Fathom) · 次元碎片", itemTypeCn: '武器 · 法师球', qlvl: 85 },
|
||
'7gw': { famousTitle: "破隐一击 (Death's Web) · 破隐法杖", itemTypeCn: '武器 · 死灵法杖', qlvl: 86 },
|
||
baa: { famousTitle: "亚瑞特的面容 (Arreat's Face) · 飞机头", itemTypeCn: '野蛮人专属', qlvl: 50 },
|
||
dra: { famousTitle: "加尔的长发 (Jalal's Mane) · 狼头", itemTypeCn: '德鲁伊专属', qlvl: 50 },
|
||
pa9: { famousTitle: '撒卡兰姆使者 (Herald of Zakarum) · 饰金盾', itemTypeCn: '圣骑士专属', qlvl: 50 },
|
||
pab: { famousTitle: '神圣小盾 · 极品45全抗 流亡/精神底模', itemTypeCn: '圣骑士专属', qlvl: 63 },
|
||
ne9: { famousTitle: '侏儒 (Homunculus) · 圣堂总管之颅', itemTypeCn: '死灵法师专属', qlvl: 50 },
|
||
rin: { famousTitle: '乔丹之石 (SOJ) / 乌鸦之霜 / 婚戒', itemTypeCn: '珠宝首饰 · 戒指', qlvl: 1 },
|
||
amu: { famousTitle: '马拉的万花筒 / 大君之怒 / 塔拉夏护身符', itemTypeCn: '珠宝首饰 · 护身符', qlvl: 1 },
|
||
jew: { famousTitle: '彩虹刻面 (Rainbow Facet) / 40增伤15攻速宝珠', itemTypeCn: '珠宝首饰 · 珠宝', qlvl: 1 },
|
||
cm1: { famousTitle: '小护身符 · 20生命5全抗 / 毁灭 (Annihilus)', itemTypeCn: '护身符 · 小护身符', qlvl: 1 },
|
||
cm2: { famousTitle: '中护身符 · 地狱火炬 (Hellfire Torch)', itemTypeCn: '护身符 · 中护身符', qlvl: 1 },
|
||
cm3: { famousTitle: '超大护身符 · 职业+1技能板 / 吉黑德的运气', itemTypeCn: '护身符 · 超大护身符', qlvl: 1 },
|
||
pk1: { famousTitle: '恐惧之钥 (Key of Terror) · 女伯爵掉落', itemTypeCn: '任务道具 · 钥匙', qlvl: 80 },
|
||
pk2: { famousTitle: '憎恨之钥 (Key of Hate) · 召唤者掉落', itemTypeCn: '任务道具 · 钥匙', qlvl: 80 },
|
||
pk3: { famousTitle: '毁灭之钥 (Key of Destruction) · 尼拉塞克掉落', itemTypeCn: '任务道具 · 钥匙', qlvl: 80 },
|
||
mbr: { famousTitle: '痛苦之精华 · 安姐/督瑞尔掉落', itemTypeCn: '洗点材料 · 精华', qlvl: 80 },
|
||
dhn: { famousTitle: '憎恨之精华 · 劳模掉落', itemTypeCn: '洗点材料 · 精华', qlvl: 80 },
|
||
bet: { famousTitle: '恐惧之精华 · 大菠萝掉落', itemTypeCn: '洗点材料 · 精华', qlvl: 80 },
|
||
fed: { famousTitle: '毁灭之精华 · 巴尔掉落', itemTypeCn: '洗点材料 · 精华', qlvl: 80 },
|
||
tes: { famousTitle: '赦免徽章 (Token of Absolution) · 4色精华洗点水', itemTypeCn: '重置道具', qlvl: 80 },
|
||
r20: { famousTitle: '20# 蓝姆 (Lem) · 财富/打钱蛮子', itemTypeCn: '高级符文 · 20#', qlvl: 43 },
|
||
r21: { famousTitle: '21# 普尔 (Pul) · 誓约/石块', itemTypeCn: '高级符文 · 21#', qlvl: 45 },
|
||
r22: { famousTitle: '22# 乌姆 (Um) · 强制/盔甲镶嵌22全抗', itemTypeCn: '高级符文 · 22#', qlvl: 47 },
|
||
r23: { famousTitle: '23# 马尔 (Mal) · 战争召唤/弑君者', itemTypeCn: '高级符文 · 23#', qlvl: 49 },
|
||
r24: { famousTitle: '24# 伊司特 (Ist) · 战争召唤/25MF打宝神珠', itemTypeCn: '高级符文 · 24#', qlvl: 51 },
|
||
r25: { famousTitle: '25# 古尔 (Gul) · 死亡之呼吸/橡树之心', itemTypeCn: '高级符文 · 25#', qlvl: 53 },
|
||
r26: { famousTitle: '26# 伐克斯 (Vex) · 橡树之心 (HOTO)/凤凰', itemTypeCn: '大号符文 · 26#', qlvl: 55 },
|
||
r27: { famousTitle: '27# 欧姆 (Ohm) · 战争召唤 (CTA)/混沌', itemTypeCn: '大号符文 · 27#', qlvl: 57 },
|
||
r28: { famousTitle: '28# 罗 (Lo) · 刚毅 (Fortitude)/悔恨 (Grief)', itemTypeCn: '大号符文 · 28#', qlvl: 59 },
|
||
r29: { famousTitle: '29# 瑟 (Sur) · 双瑟合贝/最后希望', itemTypeCn: '大号符文 · 29#', qlvl: 61 },
|
||
r30: { famousTitle: '30# 贝 (Ber) · 谜团 (Enigma)/无限 (Infinity)/野兽', itemTypeCn: '核心神级符文 · 30#', qlvl: 63 },
|
||
r31: { famousTitle: '31# 乔 (Jah) · 谜团 (Enigma)/最后希望/信仰', itemTypeCn: '核心神级符文 · 31#', qlvl: 65 },
|
||
r32: { famousTitle: '32# 查姆 (Cham) · 傲慢/末日/不灭神珠', itemTypeCn: '大号符文 · 32#', qlvl: 67 },
|
||
r33: { famousTitle: '33# 萨德 (Zod) · 死亡之呼吸 (BOTD)/无法破坏', itemTypeCn: '终极符文 · 33#', qlvl: 69 },
|
||
};
|
||
|
||
export function classifyItemCategory(code: string, quality?: string): ItemCategoryFilter {
|
||
if (code.startsWith('r') && /^r(?:0[1-9]|[12]\d|3[0-3])$/.test(code)) {
|
||
return 'rune';
|
||
}
|
||
if (['jew', 'cm1', 'cm2', 'cm3', 'rin', 'amu'].includes(code)) {
|
||
return 'charm_gem';
|
||
}
|
||
if (/^g[cfszpy][vrbygw]$/.test(code) || /^sk[cfulz]$/.test(code)) {
|
||
return 'charm_gem';
|
||
}
|
||
if (
|
||
['pk1', 'pk2', 'pk3', 'dhn', 'mbr', 'bet', 'fed', 'tes', 'ceh', 'std', 'gld', 'key', 'tsc', 'isc'].includes(code) ||
|
||
/^[hm]p[1-5]$/.test(code) ||
|
||
['rvs', 'rvl', 'vps', 'yps', 'wms'].includes(code)
|
||
) {
|
||
return 'misc';
|
||
}
|
||
if (quality === 'unique') return 'unique';
|
||
if (quality === 'set') return 'set';
|
||
return 'base';
|
||
}
|
||
|
||
// --- Browser DOM Controller --------------------------------------------------
|
||
|
||
if (typeof document !== 'undefined') {
|
||
window.addEventListener('DOMContentLoaded', () => {
|
||
initLootUi();
|
||
});
|
||
}
|
||
|
||
export function initLootUi(): void {
|
||
const { tcTable, autoTcs } = loadCanonicalTreasureClasses();
|
||
|
||
// State
|
||
let currentDifficulty: 'normal' | 'nightmare' | 'hell' = 'hell';
|
||
let currentMonster: MonsterPreset = MONSTER_PRESETS.find(m => m.id === 'baal') ?? MONSTER_PRESETS[0]!;
|
||
let isQuestDrop = false;
|
||
let customTcOverride: string | null = null;
|
||
let activeMonsterCategory: MonsterCategory | 'all' = 'all';
|
||
let activeItemCategory: ItemCategoryFilter = 'all';
|
||
let currentSortOrder: 'odds-desc' | 'odds-asc' | 'quality' | 'name' | 'qlvl' = 'odds-desc';
|
||
let activeViewTab: 'exact' | 'sim' | 'reverse' = 'exact';
|
||
let itemSearchQuery = '';
|
||
|
||
let isSimRunning = false;
|
||
let isSimPaused = false;
|
||
let abortRequested = false;
|
||
|
||
let currentAnalyticResult: AnalyticTcResult | null = null;
|
||
let currentSimResult: SimulationResult | null = null;
|
||
let latestSummaries: DroppedItemSummary[] = [];
|
||
|
||
// DOM Elements - Navigation & Difficulty
|
||
const diffButtons = document.querySelectorAll<HTMLButtonElement>('.diff-btn');
|
||
const difficultySelect = document.getElementById('difficulty') as HTMLSelectElement | null;
|
||
|
||
// Monster Selector Elements
|
||
const monsterSearchInput = document.getElementById('monster-search-input') as HTMLInputElement | null;
|
||
const monsterCatChips = document.querySelectorAll<HTMLButtonElement>('.monster-cat-chip');
|
||
const monsterListContainer = document.getElementById('monster-list');
|
||
const presetSelect = document.getElementById('tc-preset') as HTMLSelectElement | null;
|
||
|
||
// Monster Spec Card Elements
|
||
const monsterCardIcon = document.getElementById('monster-card-icon');
|
||
const monsterCardTitle = document.getElementById('monster-card-title');
|
||
const monsterCardBadge = document.getElementById('monster-card-badge');
|
||
const monsterCardArea = document.getElementById('monster-card-area');
|
||
const monsterCardMlvl = document.getElementById('monster-card-mlvl');
|
||
const monsterCardPicks = document.getElementById('monster-card-picks');
|
||
const monsterCardNodrop = document.getElementById('monster-card-nodrop');
|
||
const monsterCardTc = document.getElementById('monster-card-tc');
|
||
const monsterCardDesc = document.getElementById('monster-card-desc');
|
||
const questDropToggle = document.getElementById('quest-drop-toggle') as HTMLInputElement | null;
|
||
const questDropCheckbox = document.getElementById('quest-drop') as HTMLInputElement | null;
|
||
const questDropBanner = document.getElementById('quest-drop-banner');
|
||
const tcInput = document.getElementById('tc-input') as HTMLInputElement | null;
|
||
const btnApplyCustomTc = document.getElementById('btn-apply-custom-tc') as HTMLButtonElement | null;
|
||
|
||
// Settings
|
||
const gamePlayersInput = document.getElementById('game-players') as HTMLInputElement | null;
|
||
const partyPlayersInput = document.getElementById('party-players') as HTMLInputElement | null;
|
||
const playerChips = document.querySelectorAll<HTMLButtonElement>('.player-chip');
|
||
const mfInput = document.getElementById('magic-find') as HTMLInputElement | null;
|
||
const mfChips = document.querySelectorAll<HTMLButtonElement>('.mf-chip');
|
||
const effectivePlayersHint = document.getElementById('effective-players-hint');
|
||
|
||
// Simulation Controls
|
||
const runsSelect = document.getElementById('sim-runs') as HTMLSelectElement | null;
|
||
const seedInput = document.getElementById('sim-seed') as HTMLInputElement | null;
|
||
const btnStart = document.getElementById('btn-start') as HTMLButtonElement | null;
|
||
const btnPause = document.getElementById('btn-pause') as HTMLButtonElement | null;
|
||
const btnStop = document.getElementById('btn-stop') as HTMLButtonElement | null;
|
||
const btnCalcExact = document.getElementById('btn-calc-exact') as HTMLButtonElement | null;
|
||
const progressBar = document.getElementById('sim-progress-bar') as HTMLElement | null;
|
||
const progressText = document.getElementById('sim-progress-text') as HTMLElement | null;
|
||
|
||
// View Switcher & Toolbar
|
||
const viewTabButtons = document.querySelectorAll<HTMLButtonElement>('.view-tab-btn');
|
||
const viewPanes = document.querySelectorAll<HTMLElement>('.view-pane');
|
||
const itemCatTabs = document.querySelectorAll<HTMLButtonElement>('.item-cat-tab');
|
||
const itemSearchInput = document.getElementById('item-search-input') as HTMLInputElement | null;
|
||
const itemSortSelect = document.getElementById('item-sort-select') as HTMLSelectElement | null;
|
||
const btnExportCsv = document.getElementById('btn-export-csv') as HTMLButtonElement | null;
|
||
|
||
// Stats Bar Elements
|
||
const statTargetName = document.getElementById('stat-target-name');
|
||
const statCurrentTc = document.getElementById('stat-current-tc');
|
||
const statEffPlayers = document.getElementById('stat-eff-players');
|
||
const statTotalItems = document.getElementById('stat-total-items');
|
||
const statNoDropPct = document.getElementById('stat-nodrop-pct');
|
||
const statAvgDrops = document.getElementById('stat-avg-drops');
|
||
|
||
// Results Containers
|
||
const exactContainer = document.getElementById('exact-items-container');
|
||
const simContainer = document.getElementById('sim-items-container');
|
||
const exactTbody = document.getElementById('exact-tbody');
|
||
const itemsTbody = document.getElementById('items-tbody');
|
||
const qualityTbody = document.getElementById('quality-tbody');
|
||
const exactTcInfo = document.getElementById('exact-tc-info');
|
||
|
||
// Reverse Search Elements
|
||
const reverseInput = document.getElementById('reverse-search-input') as HTMLInputElement | null;
|
||
const reverseTbody = document.getElementById('reverse-tbody');
|
||
const reverseMatchCount = document.getElementById('reverse-match-count');
|
||
|
||
function getEffectiveTcName(): string {
|
||
return getMonsterPresetTc(currentMonster, currentDifficulty, isQuestDrop, customTcOverride);
|
||
}
|
||
|
||
function getEffectivePlayers(): number {
|
||
const g = parseInt(gamePlayersInput?.value || '1', 10) || 1;
|
||
const p = parseInt(partyPlayersInput?.value || '1', 10) || 1;
|
||
return computeEffectivePlayers(g, p);
|
||
}
|
||
|
||
// --- Render Monster List ----------------------------------------------------
|
||
|
||
function renderMonsterList() {
|
||
if (!monsterListContainer) return;
|
||
const query = monsterSearchInput?.value.trim().toLowerCase() || '';
|
||
|
||
const filtered = MONSTER_PRESETS.filter(m => {
|
||
if (activeMonsterCategory !== 'all' && m.category !== activeMonsterCategory) {
|
||
return false;
|
||
}
|
||
if (!query) return true;
|
||
return (
|
||
m.nameCn.toLowerCase().includes(query) ||
|
||
m.nameEn.toLowerCase().includes(query) ||
|
||
m.areaCn.toLowerCase().includes(query) ||
|
||
m.areaEn.toLowerCase().includes(query) ||
|
||
m.id.toLowerCase().includes(query)
|
||
);
|
||
});
|
||
|
||
if (filtered.length === 0) {
|
||
monsterListContainer.innerHTML = `<div style="padding: 14px; text-align: center; color: var(--text-dim); font-size: 11px;">无匹配的怪物</div>`;
|
||
return;
|
||
}
|
||
|
||
const html = filtered
|
||
.map(m => {
|
||
const isSelected = m.id === currentMonster.id;
|
||
const currentMlvl = m.mlvl[currentDifficulty];
|
||
const categoryBadge = m.category === 'boss' ? '幕首领' : m.category === 'superunique' ? '固定暗金' : m.category === 'chest' ? '宝箱' : m.category === 'farm' ? '刷宝' : '常规';
|
||
|
||
return `
|
||
<div class="monster-item-card ${isSelected ? 'selected' : ''}" data-mon-id="${m.id}">
|
||
<div class="mon-icon">${m.icon}</div>
|
||
<div class="mon-info">
|
||
<div class="mon-name-row">
|
||
<span class="mon-name">${m.nameCn}</span>
|
||
<span class="mon-cat-badge badge-${m.category}">${categoryBadge}</span>
|
||
</div>
|
||
<div class="mon-meta">${m.areaCn} · mlvl ${currentMlvl} · ${m.picks} picks</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
})
|
||
.join('');
|
||
|
||
monsterListContainer.innerHTML = html;
|
||
|
||
monsterListContainer.querySelectorAll('.monster-item-card').forEach(el => {
|
||
el.addEventListener('click', () => {
|
||
const id = el.getAttribute('data-mon-id');
|
||
const m = MONSTER_PRESETS.find(x => x.id === id);
|
||
if (m) {
|
||
customTcOverride = null;
|
||
currentMonster = m;
|
||
if (tcInput) tcInput.value = getEffectiveTcName();
|
||
renderMonsterList();
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
function updateMonsterSpecCard() {
|
||
const mlvl = currentMonster.mlvl[currentDifficulty];
|
||
const tc = getEffectiveTcName();
|
||
const hasQuestDrop = Boolean(currentMonster.questTc);
|
||
|
||
if (monsterCardIcon) monsterCardIcon.textContent = currentMonster.icon;
|
||
if (monsterCardTitle) monsterCardTitle.textContent = currentMonster.nameCn;
|
||
if (monsterCardBadge) {
|
||
monsterCardBadge.textContent =
|
||
currentMonster.category === 'boss'
|
||
? `第 ${currentMonster.act} 幕 · 幕关底首领`
|
||
: currentMonster.category === 'superunique'
|
||
? `第 ${currentMonster.act} 幕 · 固定暗金怪`
|
||
: currentMonster.category === 'chest'
|
||
? `第 ${currentMonster.act} 幕 · 超级宝箱`
|
||
: currentMonster.category === 'farm'
|
||
? `高收益刷宝圣地`
|
||
: `普通怪物`;
|
||
}
|
||
if (monsterCardArea) monsterCardArea.textContent = currentMonster.areaCn;
|
||
if (monsterCardMlvl) monsterCardMlvl.textContent = String(mlvl);
|
||
if (monsterCardPicks) {
|
||
const node = tcTable.get(tc);
|
||
const picks = node ? Math.abs(node.picks) : currentMonster.picks;
|
||
monsterCardPicks.textContent = `${picks} 次`;
|
||
}
|
||
if (monsterCardNodrop) {
|
||
const g = parseInt(gamePlayersInput?.value || '1', 10) || 1;
|
||
const p = parseInt(partyPlayersInput?.value || '1', 10) || 1;
|
||
const eff = computeEffectivePlayers(g, p);
|
||
const node = tcTable.get(tc);
|
||
if (node && node.noDrop > 0) {
|
||
const totalProb = node.totalProbExpansion;
|
||
const scaledNoDrop = computeScaledNoDrop(node.noDrop, totalProb, eff);
|
||
const singleNoDrop = scaledNoDrop / (scaledNoDrop + totalProb);
|
||
const compoundNoDrop = node.picks > 0 ? Math.pow(singleNoDrop, node.picks) : 0;
|
||
monsterCardNodrop.textContent = `${(singleNoDrop * 100).toFixed(1)}%`;
|
||
monsterCardNodrop.title = `单次 NoDrop: ${(singleNoDrop * 100).toFixed(2)}%, 全空概率: ${(compoundNoDrop * 100).toFixed(2)}%`;
|
||
} else {
|
||
monsterCardNodrop.textContent = '0.00%';
|
||
monsterCardNodrop.title = 'NoDrop 为 0 (必定掉落)';
|
||
}
|
||
}
|
||
if (monsterCardTc) {
|
||
monsterCardTc.textContent = tc;
|
||
monsterCardTc.title = customTcOverride ? `自定义 TC: ${tc}` : `标准 TC: ${tc}`;
|
||
}
|
||
if (monsterCardDesc) monsterCardDesc.textContent = currentMonster.descCn;
|
||
|
||
if (questDropToggle) {
|
||
questDropToggle.checked = isQuestDrop;
|
||
questDropToggle.disabled = !hasQuestDrop;
|
||
}
|
||
if (questDropCheckbox) {
|
||
questDropCheckbox.checked = isQuestDrop;
|
||
questDropCheckbox.disabled = !hasQuestDrop;
|
||
}
|
||
if (questDropBanner) {
|
||
questDropBanner.style.display = isQuestDrop && hasQuestDrop ? 'flex' : 'none';
|
||
}
|
||
|
||
if (effectivePlayersHint) {
|
||
const eff = getEffectivePlayers();
|
||
effectivePlayersHint.textContent = `当前有效掉落人数: ${eff} 人 (NoDrop 缩减已生效)`;
|
||
}
|
||
|
||
if (statTargetName) statTargetName.textContent = customTcOverride ? `${currentMonster.nameCn} (自定义TC)` : currentMonster.nameCn;
|
||
if (statCurrentTc) statCurrentTc.textContent = tc;
|
||
if (statEffPlayers) statEffPlayers.textContent = `${getEffectivePlayers()} P`;
|
||
}
|
||
|
||
// --- Difficulty Switcher ----------------------------------------------------
|
||
|
||
function setDifficulty(diff: 'normal' | 'nightmare' | 'hell') {
|
||
currentDifficulty = diff;
|
||
customTcOverride = null;
|
||
diffButtons.forEach(btn => {
|
||
btn.classList.toggle('active', btn.getAttribute('data-diff') === diff);
|
||
});
|
||
if (difficultySelect) {
|
||
difficultySelect.value = diff;
|
||
}
|
||
if (tcInput) tcInput.value = getEffectiveTcName();
|
||
renderMonsterList();
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
|
||
diffButtons.forEach(btn => {
|
||
btn.addEventListener('click', () => {
|
||
const diff = btn.getAttribute('data-diff') as any;
|
||
if (diff === 'normal' || diff === 'nightmare' || diff === 'hell') {
|
||
setDifficulty(diff);
|
||
}
|
||
});
|
||
});
|
||
|
||
difficultySelect?.addEventListener('change', () => {
|
||
setDifficulty(difficultySelect.value as any);
|
||
});
|
||
|
||
// --- Monster Filters --------------------------------------------------------
|
||
|
||
monsterCatChips.forEach(chip => {
|
||
chip.addEventListener('click', () => {
|
||
monsterCatChips.forEach(c => c.classList.remove('active'));
|
||
chip.classList.add('active');
|
||
activeMonsterCategory = chip.getAttribute('data-cat') as any;
|
||
renderMonsterList();
|
||
});
|
||
});
|
||
|
||
monsterSearchInput?.addEventListener('input', () => {
|
||
renderMonsterList();
|
||
});
|
||
|
||
// Quest Drop toggle
|
||
function setQuestDrop(val: boolean) {
|
||
isQuestDrop = val;
|
||
customTcOverride = null;
|
||
if (questDropToggle) questDropToggle.checked = val;
|
||
if (questDropCheckbox) questDropCheckbox.checked = val;
|
||
if (tcInput) tcInput.value = getEffectiveTcName();
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
|
||
questDropToggle?.addEventListener('change', () => {
|
||
setQuestDrop(questDropToggle.checked);
|
||
});
|
||
questDropCheckbox?.addEventListener('change', () => {
|
||
setQuestDrop(questDropCheckbox.checked);
|
||
});
|
||
|
||
// Custom TC input
|
||
btnApplyCustomTc?.addEventListener('click', () => {
|
||
const val = tcInput?.value.trim();
|
||
if (val) {
|
||
customTcOverride = val;
|
||
} else {
|
||
customTcOverride = null;
|
||
if (tcInput) tcInput.value = getEffectiveTcName();
|
||
}
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
});
|
||
|
||
presetSelect?.addEventListener('change', () => {
|
||
const val = presetSelect.value;
|
||
if (val) {
|
||
customTcOverride = val;
|
||
if (tcInput) tcInput.value = val;
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
});
|
||
|
||
tcInput?.addEventListener('keydown', (e: KeyboardEvent) => {
|
||
if (e.key === 'Enter') {
|
||
e.preventDefault();
|
||
btnApplyCustomTc?.click();
|
||
}
|
||
});
|
||
|
||
// Player counts & MF
|
||
gamePlayersInput?.addEventListener('change', () => {
|
||
if (gamePlayersInput && partyPlayersInput) {
|
||
const g = parseInt(gamePlayersInput.value, 10) || 1;
|
||
const p = parseInt(partyPlayersInput.value, 10) || 1;
|
||
if (p > g) partyPlayersInput.value = String(g);
|
||
}
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
});
|
||
|
||
partyPlayersInput?.addEventListener('change', () => {
|
||
if (gamePlayersInput && partyPlayersInput) {
|
||
const g = parseInt(gamePlayersInput.value, 10) || 1;
|
||
const p = parseInt(partyPlayersInput.value, 10) || 1;
|
||
if (p > g) partyPlayersInput.value = String(g);
|
||
}
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
});
|
||
|
||
playerChips.forEach(chip => {
|
||
chip.addEventListener('click', () => {
|
||
playerChips.forEach(c => c.classList.remove('active'));
|
||
chip.classList.add('active');
|
||
const p = chip.getAttribute('data-players');
|
||
if (p && gamePlayersInput) {
|
||
gamePlayersInput.value = p;
|
||
if (partyPlayersInput) partyPlayersInput.value = '1';
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
});
|
||
});
|
||
|
||
mfChips.forEach(chip => {
|
||
chip.addEventListener('click', () => {
|
||
mfChips.forEach(c => c.classList.remove('active'));
|
||
chip.classList.add('active');
|
||
const mf = chip.getAttribute('data-mf');
|
||
if (mf && mfInput) {
|
||
mfInput.value = mf;
|
||
updateExactTable();
|
||
}
|
||
});
|
||
});
|
||
|
||
// --- Category Tabs & View Switching ----------------------------------------
|
||
|
||
viewTabButtons.forEach(btn => {
|
||
btn.addEventListener('click', () => {
|
||
viewTabButtons.forEach(b => b.classList.remove('active'));
|
||
viewPanes.forEach(p => p.classList.remove('active'));
|
||
btn.classList.add('active');
|
||
const view = btn.getAttribute('data-view') as 'exact' | 'sim' | 'reverse';
|
||
activeViewTab = view;
|
||
document.getElementById(`view-${view}`)?.classList.add('active');
|
||
renderDropList();
|
||
});
|
||
});
|
||
|
||
itemCatTabs.forEach(tab => {
|
||
tab.addEventListener('click', () => {
|
||
itemCatTabs.forEach(t => t.classList.remove('active'));
|
||
tab.classList.add('active');
|
||
activeItemCategory = tab.getAttribute('data-cat') as ItemCategoryFilter;
|
||
renderDropList();
|
||
});
|
||
});
|
||
|
||
itemSearchInput?.addEventListener('input', () => {
|
||
itemSearchQuery = itemSearchInput.value.trim().toLowerCase();
|
||
renderDropList();
|
||
});
|
||
|
||
itemSortSelect?.addEventListener('change', () => {
|
||
currentSortOrder = itemSortSelect.value as any;
|
||
renderDropList();
|
||
});
|
||
|
||
// --- CSV Export ------------------------------------------------------------
|
||
|
||
btnExportCsv?.addEventListener('click', () => {
|
||
exportCurrentDataCsv();
|
||
});
|
||
|
||
function exportCurrentDataCsv() {
|
||
const tcName = getEffectiveTcName();
|
||
let csv = '\uFEFF'; // UTF-8 BOM
|
||
|
||
if (activeViewTab === 'sim' && currentSimResult) {
|
||
csv += '物品代码,物品名称,掉落品质,实测掉落数,每轮占比(%)\n';
|
||
for (const s of latestSummaries) {
|
||
csv += `"${s.code}","${s.name.replace(/"/g, '""')}","${s.quality}",${s.count},${s.percentage.toFixed(4)}\n`;
|
||
}
|
||
} else if (currentAnalyticResult) {
|
||
csv += '排名,物品代码,物品名称,分类,单次概率(%),综合概率(%),掉落几率比(1 in X),每轮期望掉落数\n';
|
||
currentAnalyticResult.leaves.forEach((l, idx) => {
|
||
const cat = classifyItemCategory(l.item);
|
||
const singlePct = (l.singleProbability * 100).toFixed(6);
|
||
const compPct = (l.compoundProbability * 100).toFixed(6);
|
||
const odds = l.oneInOdds < 1000000 ? l.oneInOdds.toFixed(1) : Math.round(l.oneInOdds);
|
||
csv += `${idx + 1},"${l.item}","${l.name.replace(/"/g, '""')}","${cat}",${singlePct},${compPct},"1 in ${odds}",${l.expectedDrops.toFixed(6)}\n`;
|
||
});
|
||
} else {
|
||
alert('暂无数据可导出');
|
||
return;
|
||
}
|
||
|
||
const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });
|
||
const url = URL.createObjectURL(blob);
|
||
const a = document.createElement('a');
|
||
a.href = url;
|
||
a.download = `d2_drop_${tcName.replace(/[^a-zA-Z0-9_-]/g, '_')}_${Date.now()}.csv`;
|
||
a.click();
|
||
URL.revokeObjectURL(url);
|
||
}
|
||
|
||
// --- Calculate & Update Exact Odds -----------------------------------------
|
||
|
||
function updateExactTable() {
|
||
const tcName = getEffectiveTcName();
|
||
const g = parseInt(gamePlayersInput?.value || '1', 10) || 1;
|
||
const p = parseInt(partyPlayersInput?.value || '1', 10) || 1;
|
||
|
||
const result = calculateAnalyticProbabilities(tcName, {
|
||
tcTable,
|
||
autoTcs,
|
||
gamePlayers: g,
|
||
partyPlayers: p,
|
||
});
|
||
|
||
currentAnalyticResult = result;
|
||
|
||
if (result.leaves.length === 0 && !tcTable.get(tcName) && !autoTcs.has(tcName)) {
|
||
if (exactTcInfo) {
|
||
exactTcInfo.innerHTML = `<span style="color: #ff8080;">⚠️ 未找到名为 "<strong>${tcName}</strong>" 的 TreasureClass。请检查名称拼写或从左侧预设选择。</span>`;
|
||
}
|
||
if (exactContainer) {
|
||
exactContainer.innerHTML = `<div style="text-align: center; color: #ff8080; padding: 40px;">未找到名为 "${tcName}" 的 TreasureClass,请检查拼写</div>`;
|
||
}
|
||
return;
|
||
}
|
||
|
||
if (statTotalItems) statTotalItems.textContent = String(result.leaves.length);
|
||
if (statNoDropPct) statNoDropPct.textContent = `${(result.noDropCompoundProb * 100).toFixed(1)}%`;
|
||
if (statAvgDrops) statAvgDrops.textContent = `${(result.picks * (1 - result.noDropSingleProb)).toFixed(2)}`;
|
||
|
||
updateCategoryCounts();
|
||
renderDropList();
|
||
}
|
||
|
||
function updateCategoryCounts() {
|
||
if (!currentAnalyticResult) return;
|
||
const counts: Record<ItemCategoryFilter, number> = {
|
||
all: 0,
|
||
unique: 0,
|
||
set: 0,
|
||
rune: 0,
|
||
base: 0,
|
||
charm_gem: 0,
|
||
misc: 0,
|
||
};
|
||
|
||
if (activeViewTab === 'sim' && currentSimResult) {
|
||
counts.all = latestSummaries.length;
|
||
for (const s of latestSummaries) {
|
||
const cat = classifyItemCategory(s.code, s.quality);
|
||
counts[cat]++;
|
||
}
|
||
} else {
|
||
counts.all = currentAnalyticResult.leaves.length;
|
||
for (const l of currentAnalyticResult.leaves) {
|
||
const cat = classifyItemCategory(l.item);
|
||
counts[cat]++;
|
||
// If has famous unique meta, increment unique count
|
||
if (FAMOUS_ITEMS_META[l.item]) {
|
||
counts.unique++;
|
||
}
|
||
}
|
||
}
|
||
|
||
itemCatTabs.forEach(tab => {
|
||
const cat = tab.getAttribute('data-cat') as ItemCategoryFilter;
|
||
const badge = tab.querySelector('.cat-count');
|
||
if (badge) {
|
||
badge.textContent = String(counts[cat] || 0);
|
||
}
|
||
});
|
||
}
|
||
|
||
// --- Render Maxroll-Style Drop List ----------------------------------------
|
||
|
||
function renderDropList() {
|
||
if (activeViewTab === 'exact') {
|
||
renderExactDropCards();
|
||
} else if (activeViewTab === 'sim') {
|
||
renderSimDropCards();
|
||
}
|
||
}
|
||
|
||
function renderExactDropCards() {
|
||
if (!exactContainer || !currentAnalyticResult) return;
|
||
const leaves = currentAnalyticResult.leaves;
|
||
if (leaves.length === 0) {
|
||
exactContainer.innerHTML = `<div style="text-align: center; color: var(--text-dim); padding: 40px;">暂无掉落数据</div>`;
|
||
return;
|
||
}
|
||
|
||
// Maximum compound probability for relative bar width
|
||
const maxProb = Math.max(...leaves.map(l => l.compoundProbability), 0.0001);
|
||
|
||
// Filter
|
||
let filtered = leaves.filter(l => {
|
||
const cat = classifyItemCategory(l.item);
|
||
const isFamousUnique = Boolean(FAMOUS_ITEMS_META[l.item]);
|
||
|
||
if (activeItemCategory !== 'all') {
|
||
if (activeItemCategory === 'unique' && !isFamousUnique) return false;
|
||
if (activeItemCategory !== 'unique' && cat !== activeItemCategory) return false;
|
||
}
|
||
|
||
if (!itemSearchQuery) return true;
|
||
const meta = FAMOUS_ITEMS_META[l.item];
|
||
const matchText = `${l.item} ${l.name} ${meta?.famousTitle || ''} ${meta?.itemTypeCn || ''}`.toLowerCase();
|
||
return matchText.includes(itemSearchQuery);
|
||
});
|
||
|
||
// Sort
|
||
filtered = [...filtered].sort((a, b) => {
|
||
if (currentSortOrder === 'odds-desc') return b.compoundProbability - a.compoundProbability;
|
||
if (currentSortOrder === 'odds-asc') return a.compoundProbability - b.compoundProbability;
|
||
if (currentSortOrder === 'name') return a.name.localeCompare(b.name);
|
||
if (currentSortOrder === 'qlvl') {
|
||
const qA = FAMOUS_ITEMS_META[a.item]?.qlvl || 0;
|
||
const qB = FAMOUS_ITEMS_META[b.item]?.qlvl || 0;
|
||
return qB - qA;
|
||
}
|
||
if (currentSortOrder === 'quality') {
|
||
const catA = classifyItemCategory(a.item);
|
||
const catB = classifyItemCategory(b.item);
|
||
return catA.localeCompare(catB);
|
||
}
|
||
return 0;
|
||
});
|
||
|
||
if (filtered.length === 0) {
|
||
exactContainer.innerHTML = `<div style="text-align: center; color: var(--text-dim); padding: 40px;">没有符合条件的物品</div>`;
|
||
return;
|
||
}
|
||
|
||
const cardsHtml = filtered.slice(0, 250).map((l, index) => {
|
||
const meta = FAMOUS_ITEMS_META[l.item];
|
||
const cat = classifyItemCategory(l.item);
|
||
const pct = (l.compoundProbability * 100).toFixed(4);
|
||
const odds = l.oneInOdds < 1000000 ? l.oneInOdds.toFixed(1) : Math.round(l.oneInOdds).toLocaleString();
|
||
const barWidth = Math.max(2, Math.min(100, (l.compoundProbability / maxProb) * 100));
|
||
|
||
let qualityTagClass = 'tag-base';
|
||
let qualityTagName = '装备底模';
|
||
let qualityColor = '#e8dcc8';
|
||
|
||
if (l.isRune) {
|
||
qualityTagClass = 'tag-rune';
|
||
qualityTagName = '符文';
|
||
qualityColor = '#ff8000';
|
||
} else if (l.isGold) {
|
||
qualityTagClass = 'tag-gold';
|
||
qualityTagName = '金币';
|
||
qualityColor = '#ffd700';
|
||
} else if (cat === 'charm_gem') {
|
||
qualityTagClass = 'tag-gem';
|
||
qualityTagName = '护身符/珠宝';
|
||
qualityColor = '#d880ff';
|
||
} else if (cat === 'misc') {
|
||
qualityTagClass = 'tag-misc';
|
||
qualityTagName = '杂项/材料';
|
||
qualityColor = '#ffd700';
|
||
} else if (meta?.famousTitle) {
|
||
qualityTagClass = 'tag-unique';
|
||
qualityTagName = '暗金底模';
|
||
qualityColor = '#c8a15a';
|
||
}
|
||
|
||
return `
|
||
<div class="maxroll-item-card ${qualityTagClass}">
|
||
<div class="card-left">
|
||
<span class="card-rank">#${index + 1}</span>
|
||
<span class="card-quality-tag ${qualityTagClass}">${qualityTagName}</span>
|
||
<div class="card-title-group">
|
||
<div class="card-main-title" style="color: ${qualityColor};">
|
||
${meta?.famousTitle || l.name}
|
||
</div>
|
||
<div class="card-sub-meta">
|
||
<span class="item-code-badge">${l.item}</span>
|
||
<span>${meta?.itemTypeCn || (l.isRune ? '符文' : '物品底模')}</span>
|
||
${meta?.qlvl ? `<span>· qlvl ${meta.qlvl}</span>` : ''}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-center">
|
||
<div class="odds-bar-track">
|
||
<div class="odds-bar-fill ${qualityTagClass}" style="width: ${barWidth}%;"></div>
|
||
</div>
|
||
<div class="odds-bar-labels">
|
||
<span class="odds-pct">${pct}%</span>
|
||
<span class="odds-expected">单次: ${(l.singleProbability * 100).toFixed(4)}%</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-right">
|
||
<div class="odds-ratio-pill ${qualityTagClass}">1 : ${odds}</div>
|
||
<div class="runs-estimate">平均 ~${odds} 轮 / 件</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
}).join('');
|
||
|
||
exactContainer.innerHTML = cardsHtml;
|
||
}
|
||
|
||
function renderSimDropCards() {
|
||
if (!simContainer) return;
|
||
if (!currentSimResult || latestSummaries.length === 0) {
|
||
simContainer.innerHTML = `<div style="text-align: center; color: var(--text-dim); padding: 40px;">暂无模拟结果,请点击左侧「开始模拟」运行 Monte Carlo 抽样</div>`;
|
||
return;
|
||
}
|
||
|
||
const totalRuns = currentSimResult.totalRuns;
|
||
const maxCount = Math.max(...latestSummaries.map(s => s.count), 1);
|
||
|
||
// Filter
|
||
let filtered = latestSummaries.filter(s => {
|
||
const cat = classifyItemCategory(s.code, s.quality);
|
||
if (activeItemCategory !== 'all' && cat !== activeItemCategory) return false;
|
||
if (!itemSearchQuery) return true;
|
||
const meta = FAMOUS_ITEMS_META[s.code];
|
||
const matchText = `${s.code} ${s.name} ${meta?.famousTitle || ''} ${s.quality}`.toLowerCase();
|
||
return matchText.includes(itemSearchQuery);
|
||
});
|
||
|
||
if (filtered.length === 0) {
|
||
simContainer.innerHTML = `<div style="text-align: center; color: var(--text-dim); padding: 40px;">没有符合条件的模拟物品</div>`;
|
||
return;
|
||
}
|
||
|
||
const cardsHtml = filtered.slice(0, 250).map((s, index) => {
|
||
const meta = FAMOUS_ITEMS_META[s.code];
|
||
const barWidth = Math.max(2, Math.min(100, (s.count / maxCount) * 100));
|
||
const pct = s.percentage.toFixed(4);
|
||
const expectedOdds = s.count > 0 ? (totalRuns / s.count).toFixed(1) : '∞';
|
||
|
||
let qualityTagClass = 'tag-base';
|
||
let qualityColor = '#e8dcc8';
|
||
|
||
if (s.quality === 'unique') {
|
||
qualityTagClass = 'tag-unique';
|
||
qualityColor = '#c8a15a';
|
||
} else if (s.quality === 'set') {
|
||
qualityTagClass = 'tag-set';
|
||
qualityColor = '#00ff00';
|
||
} else if (s.quality === 'rare') {
|
||
qualityTagClass = 'tag-rare';
|
||
qualityColor = '#ffff60';
|
||
} else if (s.quality === 'magic') {
|
||
qualityTagClass = 'tag-magic';
|
||
qualityColor = '#4880ff';
|
||
} else if (s.quality === 'rune') {
|
||
qualityTagClass = 'tag-rune';
|
||
qualityColor = '#ff8000';
|
||
} else if (s.quality === 'gold') {
|
||
qualityTagClass = 'tag-gold';
|
||
qualityColor = '#ffd700';
|
||
}
|
||
|
||
return `
|
||
<div class="maxroll-item-card ${qualityTagClass}">
|
||
<div class="card-left">
|
||
<span class="card-rank">#${index + 1}</span>
|
||
<span class="card-quality-tag ${qualityTagClass}">${s.quality.toUpperCase()}</span>
|
||
<div class="card-title-group">
|
||
<div class="card-main-title" style="color: ${qualityColor};">
|
||
${meta?.famousTitle || s.name}
|
||
</div>
|
||
<div class="card-sub-meta">
|
||
<span class="item-code-badge">${s.code}</span>
|
||
<span>${meta?.itemTypeCn || '掉落物'}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-center">
|
||
<div class="odds-bar-track">
|
||
<div class="odds-bar-fill ${qualityTagClass}" style="width: ${barWidth}%;"></div>
|
||
</div>
|
||
<div class="odds-bar-labels">
|
||
<span class="odds-pct">${pct}% / 轮</span>
|
||
<span class="odds-expected">实测掉落: ${s.count.toLocaleString()} 件</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card-right">
|
||
<div class="odds-ratio-pill ${qualityTagClass}">实测 1 : ${expectedOdds}</div>
|
||
<div class="runs-estimate">${s.count.toLocaleString()} 件 / ${totalRuns.toLocaleString()} 轮</div>
|
||
</div>
|
||
</div>
|
||
`;
|
||
}).join('');
|
||
|
||
simContainer.innerHTML = cardsHtml;
|
||
}
|
||
|
||
// --- Simulation Execution --------------------------------------------------
|
||
|
||
btnStart?.addEventListener('click', async () => {
|
||
if (isSimRunning) return;
|
||
|
||
const tcName = getEffectiveTcName();
|
||
if (!tcTable.get(tcName) && !autoTcs.has(tcName)) {
|
||
alert(`未找到名为 "${tcName}" 的 TreasureClass,请检查名称拼写!`);
|
||
return;
|
||
}
|
||
|
||
const runs = parseInt(runsSelect?.value || '10000', 10) || 10000;
|
||
const g = parseInt(gamePlayersInput?.value || '1', 10) || 1;
|
||
const p = parseInt(partyPlayersInput?.value || '1', 10) || 1;
|
||
const mf = parseInt(mfInput?.value || '0', 10) || 0;
|
||
const diff = currentDifficulty;
|
||
const seedVal = seedInput?.value.trim() ? parseInt(seedInput.value, 10) : undefined;
|
||
|
||
isSimRunning = true;
|
||
isSimPaused = false;
|
||
abortRequested = false;
|
||
|
||
if (btnStart) btnStart.disabled = true;
|
||
if (btnPause) {
|
||
btnPause.disabled = false;
|
||
btnPause.textContent = '⏸ 暂停';
|
||
}
|
||
if (btnStop) btnStop.disabled = false;
|
||
|
||
// Switch to simulation view automatically
|
||
viewTabButtons.forEach(b => b.classList.toggle('active', b.getAttribute('data-view') === 'sim'));
|
||
viewPanes.forEach(pane => pane.classList.toggle('active', pane.id === 'view-sim'));
|
||
activeViewTab = 'sim';
|
||
|
||
try {
|
||
const result = await runMonteCarloSimulation(
|
||
{
|
||
tcName,
|
||
runs,
|
||
gamePlayers: g,
|
||
partyPlayers: p,
|
||
magicFind: mf,
|
||
difficulty: diff,
|
||
seed: seedVal,
|
||
tcTable,
|
||
autoTcs,
|
||
},
|
||
async progress => {
|
||
if (abortRequested) throw new Error('Simulation aborted');
|
||
while (isSimPaused && !abortRequested) {
|
||
if (progressText) {
|
||
progressText.textContent = `已暂停 (${progress.completedRuns.toLocaleString()} / ${progress.totalRuns.toLocaleString()}) - 点击「继续」恢复`;
|
||
}
|
||
await new Promise(r => setTimeout(r, 50));
|
||
}
|
||
if (abortRequested) throw new Error('Simulation aborted');
|
||
renderProgress(progress);
|
||
},
|
||
);
|
||
|
||
currentSimResult = result;
|
||
latestSummaries = [...result.itemSummaries];
|
||
updateCategoryCounts();
|
||
renderFinalResults(result);
|
||
} catch (err: any) {
|
||
if (err.message === 'Simulation aborted') {
|
||
if (progressText) progressText.textContent = '模拟已中止';
|
||
} else {
|
||
console.error(err);
|
||
}
|
||
} finally {
|
||
isSimRunning = false;
|
||
isSimPaused = false;
|
||
if (btnStart) btnStart.disabled = false;
|
||
if (btnPause) {
|
||
btnPause.disabled = true;
|
||
btnPause.textContent = '⏸ 暂停';
|
||
}
|
||
if (btnStop) btnStop.disabled = true;
|
||
}
|
||
});
|
||
|
||
btnPause?.addEventListener('click', () => {
|
||
isSimPaused = !isSimPaused;
|
||
if (btnPause) {
|
||
btnPause.textContent = isSimPaused ? '▶ 继续' : '⏸ 暂停';
|
||
}
|
||
if (progressText && isSimPaused) {
|
||
progressText.textContent = '已暂停 - 点击「继续」恢复';
|
||
}
|
||
});
|
||
|
||
btnStop?.addEventListener('click', () => {
|
||
abortRequested = true;
|
||
});
|
||
|
||
btnCalcExact?.addEventListener('click', () => {
|
||
updateExactTable();
|
||
});
|
||
|
||
function renderProgress(p: SimulationProgress) {
|
||
const pct = ((p.completedRuns / p.totalRuns) * 100).toFixed(1);
|
||
if (progressBar) progressBar.style.width = `${pct}%`;
|
||
if (progressText) {
|
||
progressText.textContent = `模拟进度: ${p.completedRuns.toLocaleString()} / ${p.totalRuns.toLocaleString()} (${pct}%) · 掉落 ${p.itemsDropped.toLocaleString()} 件`;
|
||
}
|
||
renderQualityTable(p.qualityCounts, p.completedRuns, p.itemsDropped);
|
||
}
|
||
|
||
function renderFinalResults(r: SimulationResult) {
|
||
renderProgress({
|
||
completedRuns: r.totalRuns,
|
||
totalRuns: r.totalRuns,
|
||
itemsDropped: r.itemsDropped,
|
||
qualityCounts: r.qualityCounts,
|
||
isFinished: true,
|
||
isPaused: false,
|
||
});
|
||
renderSimDropCards();
|
||
}
|
||
|
||
function renderQualityTable(q: QualityCounts, runs: number, totalDrops: number) {
|
||
if (!qualityTbody) return;
|
||
const items = [
|
||
{ name: 'Unique (暗金)', count: q.unique, color: '#c8a15a' },
|
||
{ name: 'Set (套装)', count: q.set, color: '#00ff00' },
|
||
{ name: 'Rare (稀有)', count: q.rare, color: '#ffff60' },
|
||
{ name: 'Magic (魔法)', count: q.magic, color: '#4880ff' },
|
||
{ name: 'Rune (符文)', count: q.rune, color: '#ff8000' },
|
||
{ name: 'Normal / Sup (底模)', count: q.normal + q.superior, color: '#e8e8e8' },
|
||
{ name: 'Gold (金币)', count: q.gold, color: '#ffd700' },
|
||
{ name: 'NoDrop (空掉落轮数)', count: q.noDrop, color: '#666666' },
|
||
];
|
||
|
||
const rows = items.map(it => {
|
||
const denominator = it.name.startsWith('NoDrop') ? runs : totalDrops;
|
||
const pct = denominator > 0 ? ((it.count / denominator) * 100).toFixed(2) : '0.00';
|
||
return `
|
||
<tr>
|
||
<td style="color: ${it.color}; font-weight: bold;">${it.name}</td>
|
||
<td style="font-variant-numeric: tabular-nums;">${it.count.toLocaleString()}</td>
|
||
<td style="font-variant-numeric: tabular-nums;">${pct}%</td>
|
||
<td>
|
||
<div style="background: #1c1813; border-radius: 3px; height: 8px; width: 100%; overflow: hidden;">
|
||
<div style="background: ${it.color}; height: 100%; width: ${pct}%;"></div>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
`;
|
||
});
|
||
|
||
qualityTbody.innerHTML = rows.join('');
|
||
}
|
||
|
||
// --- Reverse Lookup --------------------------------------------------------
|
||
|
||
let reverseIndex: Map<string, ReverseLookupEntry[]> | undefined;
|
||
function getReverseIndex(): Map<string, ReverseLookupEntry[]> {
|
||
if (!reverseIndex) {
|
||
reverseIndex = buildReverseLookupIndex(tcTable, autoTcs);
|
||
}
|
||
return reverseIndex;
|
||
}
|
||
|
||
reverseInput?.addEventListener('input', () => {
|
||
const query = reverseInput.value.trim();
|
||
if (!query) {
|
||
if (reverseTbody) reverseTbody.innerHTML = '';
|
||
if (reverseMatchCount) reverseMatchCount.textContent = '0 项匹配';
|
||
return;
|
||
}
|
||
const results = reverseLookup(getReverseIndex(), query);
|
||
renderReverseLookupResults(results);
|
||
});
|
||
|
||
function renderReverseLookupResults(results: ReverseLookupResult[]) {
|
||
if (!reverseTbody) return;
|
||
let totalMatches = 0;
|
||
const allMatches: { res: ReverseLookupResult; entry: ReverseLookupEntry }[] = [];
|
||
for (const res of results) {
|
||
for (const entry of res.entries) {
|
||
allMatches.push({ res, entry });
|
||
}
|
||
}
|
||
allMatches.sort((a, b) => b.entry.compoundProbability - a.entry.compoundProbability);
|
||
|
||
const rows: string[] = [];
|
||
for (const m of allMatches) {
|
||
totalMatches++;
|
||
const res = m.res;
|
||
const entry = m.entry;
|
||
const pct = (entry.compoundProbability * 100).toFixed(4) + '%';
|
||
const odds = entry.oneInOdds < 1000000 ? '1 in ' + entry.oneInOdds.toFixed(1) : '1 in ' + Math.round(entry.oneInOdds).toLocaleString();
|
||
rows.push(`
|
||
<tr>
|
||
<td style="color: var(--gold-primary); font-weight: bold;">${entry.tcName}</td>
|
||
<td>${res.matchedCode} (${res.matchedName})</td>
|
||
<td>${entry.picks}</td>
|
||
<td>${(entry.singleProbability * 100).toFixed(4)}%</td>
|
||
<td style="color: #a5d6a7; font-weight: bold;">${pct}</td>
|
||
<td style="color: var(--gold-light); font-variant-numeric: tabular-nums;">${odds}</td>
|
||
</tr>
|
||
`);
|
||
}
|
||
|
||
reverseTbody.innerHTML = rows.slice(0, 200).join('');
|
||
if (reverseMatchCount) {
|
||
reverseMatchCount.textContent = `找到 ${totalMatches} 条掉落记录${totalMatches > 200 ? ' (展示前 200 条)' : ''}`;
|
||
}
|
||
}
|
||
|
||
// Initial render
|
||
renderMonsterList();
|
||
updateMonsterSpecCard();
|
||
updateExactTable();
|
||
}
|
||
|