Z5I5KK7NX6RS23QAB7ISLQCM5Z6TMVZK532NPSE7CO4MNXNKVKMAC L72HFM6IYLNHEFEIFOQQQUAGMY2RN4POCV3Q3SMQERSQBMEZ5J3QC SJGRJWVRMIYRCSQUR4LMS2APZNSJ64JAW7647NYTB52REONXVD2QC HXHNGFB2VCXB6YXDND35HJI22GBJC3QTSUR2TK3M3LXGJHVNXVHAC J6PGLNNQWZU7S7QKFZ7QXLMSVIISQM6BHALJ6EU3JPMDXLAEB7OQC DPJCZOPIKAKQIS4YRXETBSJA5ZTL2KQESSJE2TEZFLRQARXUVFXQC EMED7UWAGESRTWJJWVXRL27O4XMBGZDDAU4LNVF3MQAYKFKRDNXQC GZRMSSTEWT3T2JERC7WCVT727X237UA6MXWVT6OSV5D5BRD4UOGQC CZPLX4O4R7K3TF3NSAL5PT7NO3CUOLDY3OR332GBIYYNKMZTW24AC 6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC Z3E7XJOW6NSBDYRDKSGTOAEJSPATAUX4JUFCL4DIL3372GL4K52QC DDJJXZKSQLXUXIMLKMKHY75JKC2IRA2A7SEVSUNL5FSCFH77T4IAC HUH4SI4HXIP72KQSJP2I4ELHX5KUQZM7FFGKZZGJ33DF7E3JHMYQC WBVWCD2RP2OYT4E553LJEOL4IV6GLXVO3O4LBK3N3ZRMPQRL3CBAC 3UFL673QX2JG7KHTAM7DFH4BBYVHDNMXBS2RW45G3JBNFZFLSRRQC 3J7QNHQ4F2VBYCK6SWKPO3AW3YYAJZNWOW6XNSURSRDZOE2ZIGQAC <h1>Quests</h1><h3>Allocated points so far: {allocatedPoints}</h3><h3>You have {remainingPoints} skill points left in your current batch</h3>
<h2> Available SP: </h2><div>{remainingPoints}</div>{(remainingPoints === 0) ? (<div><br></br>(Start a quest first!)</div>) : (<></>) }{activeQuest === null ? (<><h2> You have no active quests! </h2><button onClick={() => {setActiveQuest("1000 Mana0");}}>Get a quest</button></>) : (<><h2> Active quest: </h2><div>Goal: {activeQuest}</div><br></br><div>Current: {'[PLACEHOLDER]'}</div><br></br><div>(Hint: You won't run out of skill points, but they come in batches - try to use the fewest you can!)</div><br></br><h3>Batches so far: </h3><div>{3}</div></>)}
canAllocate(args.selfPointNodeRef, prevGameState.worldGen, prevGameState.playerSave.allocatedPointNodeSet)
canAllocate(args.selfPointNodeRef,prevGameState.worldGen,prevGameState.playerSave.allocatedPointNodeSet,prevGameState.playerSave.availableSp) === 'yes'
export function canAllocate(selfPointNodeRef: PointNodeRef, worldGen: WorldGenState, allocatedPointNodeSet: HashSet<PointNodeRef>): boolean {
export function canAllocate(selfPointNodeRef: PointNodeRef,worldGen: WorldGenState,allocatedPointNodeSet: HashSet<PointNodeRef>,availableSp: number): "yes" | "already allocated" | "not enough sp" | "no" {