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" {