--!name Game Master's Toolkit
--!icon sword
--!category Games
local _=[=[

ca=al|$l|#xn|cal|$L|dar|ed|el|gar|gil|$ |jos|&x|lo|#V|#i|nel|#W|ro|sam|tam|wil|$,|bet|ad|os|fen|ty|mab|jen|rob|hen
cb=||||an|el|er|i|o|ri
cc=a|en|ie|y|ia|ette|wyn|ra|bXe|$m|&ya|#P|ey|da|#^
cd=&z|win|#2|an|on|ias|ert|*7|&/|V|r$W|o|by|ry|&<
ce=ey|in|el|is|o|ry|an|al
cf=# |7|br#l|cole|t$An|h8|m8|V|&>|st~|wh$n|w#y|f$C|h$5|h$M|#Vsh|swift|$D|#T|g#Qn|$Eley|&x#z|penny|wren|c9|f$Xch
cg=#,d|wX|&/|w#y|f$1|br#l|h8|ley|#ie|w$W|#-th|d$F|9|st#H|by|$G|sm$m|er|c&?|g$o
ea=ae|cae|el|fae|gal|il|lae|lir|mae|mir|nae|rhy|sae|syl|tha|#u|vae|yl|ara|ely|$m|quel|sel|cel|ny|ori
eb=||||la|ri|N|ly|na|ve|si|ra
ec=ra|wen|iel|$m|a|ys|Xe|ira|ana|#ke|wyn|ae|ari|lis
ed=or|an|$B|$m|as|en|il|&T|aen|ir|eth|ar|ros|$;
ee=ae|is|yr|el|in|ei|ien
ef=silO|m&_|6r|dawn|$.f|$Yt|&`|w#+|nH|gV|w8ow|s$:|fr(|eO|brH|&~|r#!|# 
eg=bo$'|&B#W|$-g|br#l|p*8|&Ude|gl&(|lH|t$An|wG|fY|dew|veil|c9n|w#y|&V|#ie|b&)m
da=bal|$E|bor|dur|dol|gim|grom|$,|kaz|kil|mor|nor|t$A|$!|ul|bru|dag|g&V|$p|ror|vond|bel|ag|os|thra|ung
db=||||a|i|ra|du|go
dc=a|dis|ra|h#D|wyn|da|ga|unn|ri|vi|ka|$la|$Xh
dd=in|$qm|dur|rak|ok|gar|&W|li|rin|dek|*7|#!|brek|t$ 
de=im|ur|ek|ad|ri
df=i#m|st~|d#s|&"#W|*9|anvil|coal|gran$n|#,ge|gV|f&Xt|7|&Y|r#/|em$l|$@el|sl$o|&[
dg=bWd|f&#|delO|h#A|b9|sh$1|vein|axe|$pm|$-|#,ge|$G#z|hWt|he$=|b&T|$qp|#xid|mug
ha=bil|bun|cam|dod|fen|hob|lav|#i|mil|nib|pip|pol|ros|sam|til|tob|wil|#V|dai|fil|&X|&$|$L|hil|&&|bel
hb=||||li|pa|to|be
hc=ly|ie|a|wise|bX|sy|anne|ia|y|ora|een|&Z|l&?a
hd=bo|do|ry|wise|lo|kin|n#2|o|by|f#n|&z|win|$lt|mac
he=py|kin|o|y|ny
hf=apple|#xm|&aR|&bn|g#y|g#Qn|h~y|h8|&x#z|#T|mug|*A|#Qd|tea|#us#z|$D|#4|$Eley|bu&c|p&dG
hg=b&?om|$+9|foot|h8|d$F|#-t|bank|m#H|br#l|$.f|cake|gaNr|$+y|&*#3|&a&/|wX|c&eb|toe
oa=gr|kr|ur|mog|zug|$E|dro|gor|kag|lug|&W|ruk|&U|thr|vog|yaz|az|#xk|g# |mur|ogg|rag|skar|dush|hruk|bol
ob=||||a|u|o|ak
oc=a|ka|ga|&U|ul|ra|$H|gul|ola|eth|n# 
od=ak|og|uk|# |ur|ok|nak|gul|dush|rog|#V|ub|g&+|ruk
oe=ag|uk|ra|ur|ez
of=sk${|bl#y|b~|i#m|7|br&C|&>|tusk|# |$qm|#8|$}|gut|rot|mud|f&Xt
og=splitR|fang|$d|h#A|maw|$r|axe|crus#9|hide|scar|howl|f&#|gnaw|biR|rip#W|$2
na=as|bjor|ei|&0|gun|$ |in|kar|lei|ra|&^|sol|sva|$!|ulf|vig|yr|#xn|dag|ey|$p|rag|$@n|thy|ar|kol
nb=||||a|i|ge|var
nc=a|h#D|&V|dis|ny|frid|veig|unn|borg|#<d|ra|ja|&X
nd=ar|ulf|*7|ald|$sd|$@in|bj&T|leif|rik|var|geir|ir|$qm|&xil
ne=e|in|ey|ir|i
nf=r#'n|#8|fr(|wolf|i#m|sea|bW|#^|$N|th$D|elk|fjord|$O|# |#T|&>
ng=$-|d&?ir|b&T|heim|*9|sh$1|$Ge|$d|$pm|ri#1|cYer|wake|bWd|s_nd
ia=aur|cas|dec|fla|$p|jul|luc|#V|oct|qui|sev|tib|$s|vir|$L|ser|ant|cal|fel|gal|liv|pol|R|vit|max|& o
ib=||||i|el|8|er|on
ic=ia|a|ina|8a|Xa|ena|ara|&ya|ica|ilia
id=us|ius|o|an|ian|or|ex|ens|io|ax|is|inus
ie=is|ae|en|ix|ior
if=a&1l|$Lvin|drus|fabr|lucr|#Vc|octav|pet#m|seO|v$Fr|vesp|claud|t${|caec|albin|sulp
ig=ius|ianus|ia|Xus|onius|atus|inus|ex|ilius
za=# |bah|dar|fa|ha|ja|ka|ma|na|ra|sa|ta|za|ama|esh|ib|kha|nay|sul|ya|om|que|tey|zah|mir|$,
zb=||||ri|di|la|mi|si
zc=ra|ya|na|ia|eh|ira|ani|ima|ah|ela|isa|ude
zd=im|ir|an|ar|ul|esh|ad|un|ef|ok|em|ouf|ek
ze=i|en|an|el|is
zf=s#A|&`|dune|$O|gV|am$l|palm|&"#W|w#+|6r|oasis|gl&2|ochre|cin#1|mir#@|j&,al
zg=wal$t|sGer|see$t|b&T|$?|ri#1|weaO|cYer|w#2|stri#1|tXer|bin#1|wrH|da&cr
np={who};l#l$Zbld}E{fea};*B{clo};$G& $Z$G};$:#={$:};s$6$Zsec}
who={@cL|{@nL|{@iL|{@zL|{@cL|{@e[elf#(|{@d[d$}f#(|{@h[$ flA{job}|{@o[orc#(|{@h[gnome#(|{@e[$ f-elf#(
age=&;ng|&;ng|m#a-#@d|m#a-#@d|V|el#1ly|$q&Dd|#b-&Ed|w&Fed|#@l#k|$NG|sprH#CV
job=#9bal&#|tax#Rllec$!|&fdig#<|&Z$?|s&gbe|mapma$t|r#Bcatc#9|min*Cl|inn$?|&G|sXs#-d|cob#or|al#>$Yt|#F|shep#9d|*D|tan& |midwife|c#;ier|s$uor|#[|#,#$|&ac#9|weaO|_p#W|retirD$e|st#Qt urchin|b$_y &hR|s#@|*Eer|bre$=|d#/h#A|falc~r|l#/sm$m|potR|#,esR|sc#t|&[$t|wiz#2#X&N#^|c#l|gam#or|playwrH|&.dler|&f rob$l|ex-pir$o|archiv&#
bld=tYFgaunt|s$AtFst#t|broad-&3ul#1ed|wiry|*Ap|w8owy|&h#>d|#cset|lanky|&HactFmuscular|fr$u-l#lG|to$=G|r#5-&Ed|bony|$Erel-ch#Ged|smYFqu$W
fea=4r#lDnose|$`$YsAfG&:|$Ym$3D$rs|2havDh#H|#xids/Cwa&#|freckl1eOyw#9e|ink-6inDfG&:|2ilO/oth|#?#mouncDlimp|fl&4-rDh$C|#paxDmou6#>|cY#vDh#As|p#/#VkD#>eks|#7$rp$3|Oy #T fGern$us|#q&yAW|&`$+nt skin|piercA$N $rs|4left chin|)Wd f${Jb#Hs|#Eap-$dD$qn|$rb9sKmeet
clo=#?$3Dgre0coat|fadDf#Pry|#7ap#m#ROD#0fl#;|&5/o much *Eery|#qud-sp*Fcl&Y|spotl#k#"$n l#Pn|#.atEa #T f&F|a #9on-f&F cl&Y|m#;nA7|$Ym$3Dboots|2# Jgu#D#Rl#;s|arm#; $`siz1too big|no &31#BY|#wox-fur#Rllar
man=#) #0&B#Ws|la$'s #B#6o&'jokes|&Imak1$r#Rntact|inRrupts#Rn6ntly|"p#!ful#Cpol$n|s*Bcreati$;y|&O#{ #unkG|k#ss glancA&-#r|oO-expl#!s$4thG|flatRs$4~|c$_s#Rins#"#{ $~G|"su$Ici#vJs_n#<s|#) Oy s#3ly|bo#ns$( #6p#n|&^hs$aamaticYy|ge#=nam1w#mg` pur&$e|6rtl1easily|$~s/Mpet c9|haggl1oO$4thG|tXs$4S#6dreams|fidgetsE#:$vy#Rin|giv1adv#^$J*G &!D#,|#) #}#urd #W$-|"*H eatA#SthG
wan=#Ibuy $2Cfami#Cm8|a $f life, #Bl#n|#IseeCocean`ce|#I#V&i$g #66t$B|#I&@ #6n&4|newsJ#q&yAbroNr|#Ipay&JMdan#<#v debt|4&13Ms$W&j$'R|#?#!tAl(&kMf&6|#Iget #tJ#us/wn|proofKgh(s#dr&7|N respectJ#6gu#D|#Yare #9b?Ccliffs|#Iw#}$,v#G#Rnt#G|)ody$w3 SnH|#IlWn/ r#H|2tol0heir&)m $2|#IruinMri$s|#Iret&6Eeno$' gV|#SS#It#neMnew recipe|#6&Va#j dog $2|#Ijo#0an#O&K|#Iex&$eM$Lrupt&Jicial|#qap ofCV $#s
sec=paysMdebt/ #Fs|*1D&0mM&P $}|$Ies3Mno#o h#ve|ca$PactuYy r#H|"heir/MfY0h#ve|poi$-D#6V masR|was`ceMfWDb#Ait|"s#3#CbeA&lsed|ow1#6life/Mhag|lov1#SSelse#Xsp#ve|diDa yW agoFc&4 $2 w#mg|"s$6#COy &zh|#,g1docum#hs`C$Q|#-shipsM#,b*Igod|isn't&mNy claim/ be|#>atD#Iw#0#6ti#z|"RrifiDofCdark|sVM*2/C$w|$zl(/mb|in#,ms3&Agu#D|"beA7ma#{d|hasMtw#0no*G k&=s$(|isCm&!D#uef$4S$~s$(|r#Hs oNr *3#X$XRs
tv={tnm};$?$Zkpr},&m{$G};special$Zfd}F{dk};k&=n3#Nkn};&/H:#Ncr};#Ks:#Nrm}
tnm=$U|$U|$U|$/|$/|{!c}'s#Np}|N#Nn}'s#Nb}|N#Nnu}
kpr={@c}|{@c}|{@d}|{@h}|{@n}|{@e}|{@o}|{@i}|{@z}
ta=d9&&|gVen|r$xy|la$'G|&{G|cr#led|silO|g#Ded|br&C|#iry|l~ly|j$My|&>|7|&"#W|$;vet|l$vy|#ursty|wWy|$RG|hid&<|bl#+|dancG|th#Q-legged|$Oy|$.ky|p#!ted|$+nG|&0zen|lazy|h~st|bWded|m&dy|sGG|d&Vken|w$Wed
tn=l*J|goat|6g|anc$A|r#'n|c9n|wyOn|#imaid|boot|toad|h#5|bad#<|$7|*K|plo$'|$,p|ox|&Y|bX|cauld#m|pig|mule|owl|s$:|s#-d|l$B|m&_|knH|b#2|wheel|hat|flagon|d$v|&bret|eel|$qffin|*D|b$Hop
tm=f#a|f&F|#us#z|*9|key|rose|sp&_|d&e|c9|6r|sh$1|p$Wle|tank#2|l*J|$,e|anvil|&H&2|$d
tp=r#G|retreat|hWth|ta#o|cXar|f$My|h#'n|hY|&<|n#l|lodge|kit#>n
tb=h#H|t$u|n#G|arms|&*#3|$.p|bWd|purse
tnu=th#Q c9s|sev0keys|$`pikes|n#P $Erels|f#; w#+s|twelve bXs|five h#5s|six *Ks|eH oars|&hdrD$@ps
fd=$RDeel pie|friDriO crayf$H|$IcDl#hils|#Eoose-egg ome$Xte|ro#n pigeon|$O f$H&nkes|$h p#n$y|veni$- saus#@s|7$l&it$5|p$WlD#9rG|&8kFpota#Ipie|go#B&lry|&Zf $@wD#0$F|&gspy pork kn$vle|garlic sn$us|w&*e ro#n tr#t|pep#WDd$v eggs|dumplGs #0broth
dk=7 $F|c$Sy ci#1|*A br#Ay|net#z &Zr|$IcDrDw#P|d$}v0st#t|h~y m#H|$Ry#"isky|s#; c#9&iw#P|p#P liqueur|p$F sum#i $F|m${D#Wry|hot $IcDmilk|el#1f#3er gin|d#Ael$B w#P|rye &Zr
tkn=4atES$rK&{s`C$E|nH#Carm-wr#GlAcont#Gs|#Eh(Kor#1s$ainks|4Xar$J Smay enR|#pYJ$:tD&$Rs|2tuffDbW wWA49n|)rawl$4 sGle nH|#?arrotKrepea#=s$6s|)#2#"o`#Ck&=s sad $-gs|wYs#ROD#0carvDn&4s|#w&)rKslop1badly|4#2 g&4K&Iends|#7V#Oer#Xtrophy wY|servAm&7s` sh$1s|2t&zt$J-weapons rule|#w#Q m&73 *Lt$FJa $7|)&, #K3 #Fs|a d$5bo#2E#piz#2#X&E` it
tcr=a 9dy&nrav#7crew|#pedd&K|$es` le#'|& v#v #[s|$$$)us troupe|nW#Cempty,Ftoo $f|off-duty d#/h#As|&p #0disguise|#wami#C$2?Mfu$i|#i*M#=hagglA$Sly|#.#yDfig&1 sittAal~|gu#D &Nic1cele#xtG|)orDno#oF$`$ws|a d$}f _de delegat$B
trm=#>apFlumpy|f$C, c$.nF$f|dW, &aE#.ot b&+|onlyC6#o loft "f#Q|f${, unl#k#U pay dou#o|s$,edE2norAs_n#<|lo$;y, ap$5?Cnois1#BnH
l1=$^ca}#Rp#W*N-g$8;P
l2={f-ea$8*N-bc&L;P;P
l3={ca-bfa&L, {ca-caa$8<;P;{lx}
l4={daa-caaa&L*Naa-jaa$8<<;P;#L;{lx}
lx=#L|#L|P
trk=#&|#&|#&#Ndt}
tad=cr&,ed|tarn$Hed|&[y|carved|chip&.|7e&&|pol$Hed|b#h|en&fd|p#!ted|r$xy|f&(d|delic$o|#c|#4|crude|sGed|b#Hed|gl&2|b~|#xss|&[
tob=ch#k knH|l#/et|key|sp&_|#um#o|&B#z|&a&/|music box|c#Bfigur#P|h#A m&Q|toy $e|s&7 rG|flute|$<|h$C#Rmb|coin?Ml( kGdom|pipe|#V#o|bX|d$M|qu8|vialJs#A|lens|$XR, &Is#h|rG|*K stub|&H&2|$InnAtop|ho#Csymbol|b$vle
tdt=w$mMpor_it&k$Q|$c#/Jh$C|#VkedE#Eu#D &^n|th#B&O0$pd|6m&.E#Yoy&os&7|coOD#0teeth #Vks|tiedE#YDribbon|$cove$Jte|&~ #4/Ctouch|6#PdEV bl#y
val={gem} #-th$( {gv&L
gem=a d#s rDgemst~|#qilky#"$n pWl|4$Sy blue cry6l|#w#P gre0gem|#?ol$HDpieceJjet|am$lE#7insect&k$Q|a 6r-fleckDsapph&6|a 7 opal|a j&( &0g|#?$CJivo&id#^|#7enamXD$<|a *EDdag#< hilt|4ry6l decanR|)#mze $Ase $"tte|#EV0$)$X
gv={ba-ba}|&q|&q|&r|&r|{hf-hf}|{baa-baa}|{bfa-bfa}|{cfa-cfa}|{faa-faa}
mag={mba}K{mpr}
mba=4op#W rG|#7i#m key|)Sw#A|2ilO bX|#El&2 $r|#p#y0flute|2tSamu$X|a&jg#<|#:*J|#.at|4#Ale|)elt b$vle|)owl|2h$1|4oin|4omb|#q&Q|a qu8|4oilJr&9|4up|#?$CJd#^|4l&Y pin
mpr=#4s nW l$y|g#3s#"0dan#< "nW|&B#WsC#j home|&Ige#=wet|$Xs#U $~Ec9s|&9ns S#r, Nn c&e#os|*H f#+s i#=#j $2/#U|&O0gV "nW|lHs *4 &R|mak1&s tr$x#U|g9s #c#"0&; lie|*Os &}&k#Iweak w#P|shrinks/ f*0*Lp#/et|smXsJwhoeO#U #unk of|*5/CnW#G &f|s#{nc1y#; foot$@ps|h&7s smY cu#=oOnH|&"i1*Lvo#^#U've hWd|l#As`#"$oO#U cY|draws rats, *H|k#ss f#y #b3Mmonth|hVs Sspok0m#k#@|&3ws h*IwritG|calmsM#83Mminute
ru={&e};hWd? {src};truth:#Nru};l#H$Z$.}
rum=#J|#J|{rst} {rwr}.
rwh=N *D|#7orph#7girl|N new &G|$$knH|N mayor#Xtwin|a #Z|#.8$j|#YetirDge$i|N ba$t|&p|N loc&owitch|a#Ung$J#o|N &fdig#<|2ouNrn _#1|#pan#1Amonk|N &bry$G|#7orc #ice&Wy|a $~Ac9
rdi=w#h $YsG|w#_se0afR #6o&'fu$i|got &zh oOnH|"buyAup YC$O|dug up $[s_nge|s*BNy sawM$7|6rtDspeakAin/ngues|_dD#6&Udow3Mf#a|"hidA#pantD&gminal|fX a&{Fca$Pbe w&C|h#_be0robbGC$&|w#_&lsDbyMbeggar|k#ssMmonsR asMpet|$z&`k0city|w#_replacDby #7imp(or|bo$'tM&lsDs#-d|hWs vo#^s?MwX|w#_se0meetAa vamp&6
rwr=nWCV m8|#}d9nD$*|&-6ndAst~s|#t p#nC#Vsh|#}catacombs|#}V w$3to$=|$Vlake|#}hauntDorch#2|$T byCd#/s|#}$+nD#,#G|in$QC&*#3 h8|&-lord#X$Gor|#}se$=s|onCV bat#zf$1|*PC&}fY|$DC#V&x square|&-$)us&nmp|#}d#s m#P
rst=N d#H wo$P6y *Q|N wolv1wo$Pgo|Nre#X#e *Q|a #r &9ns`#C#BmidnH|*3 k#s hWAsGG|$[V "wakG|N &} h#_*OD&>|_vX&: k#s van$HG|aZ#* w#_f#5|N#Rws give 7 milk
src=a$aunk s$uor|a & v#v &G|a dyA$G|N taOn $?|2t#Qt preac#9|)orD$w|a3#$|#:etR`M*R|#7V $e|#wrHenD&5#i|#Yi$s#Oer|N/&'&ger|#qapma$t#X&N#^|a tipsy$J#o
tru=&M|&M,F#-se th#7*0s#5s|p$5#C&M|w#D#Cexag#<$od|false, &a #SSbeliev1it|a _p #SSset|&M,F#SS$:#=*0kept $f|N rH s$!y$(Cw#mg place
lea=&!C&bry$G|l#l3 m&dy #*s|sWchC$& re$Lds|fol#3Cc9s|bribeM$w|#>ckC&fy#2 #BnH|f#+C$YsAwitn#k|r#HCV map &-li#xry|&! at&A&<|fol#3Cm~y
w1={wsaUaI
w2={wsbUbI
w3={wscUcI
w4={wsdUdI
wsa=soft ra#0&3$=s|#uck m&TAfog|th$D#8 by afRn&_|&@F&gsp|$N$ai&D Y&jy|racAc$Ss, blusRy|2&d0h$u#8|m#DFoOc#n
wsb=#cFhumid|a viol#h th$D#8|hazy he#Bshim#i|#4 ra#0&R|d&iw#+Fd$x|&@ sk$y,#Rol nH|bakAhe#Bby$Jon|sc*Fc$Ss
wsc=cV$ai&D|gVenF&~|#3 $N c$S|first fr( #Bdawn|a #T s&YAr#!|brHFcV|#8y,Es&8t|w#D geese flyAs#th
wsd=#c s&=fY|bitR &@ cV|f#QzAfog|s&8tFslush|$NFraw|#7#^ #8|lH flurr$y|hoarfr(`$4 #xnch
wta=ch8y|*S|m#D|#4|$KcV
wtb=#4|hot|swelRG|p$.sant|*S3 sum#i
wtc=*S|cV|ch8y|m#D|$K#4
wtd=cV|f#QzG|bitR|raw|m#D3 winR
wwi=&~|#:H b#Qze|g$xy|st#mgFst#Hy|howlAg$Fs|shiftAY&jy
wef=_$; #_normal|_$; "s#3 goG|visibility "poor|fir1are h#2/ lH|_cks#dw# Da#j|#E#y&jy3 s$uG|riOs#d&VnAhigh|&s#dr#Gl#k|s#5&nrr$yM#T #j|roads *O/ mud|bow&3ts#dtr$Wy
wtm=## muchCs&4|## gettA#-se|## &@Aup|##Ms&d0*Mge
r1=5aQ
r2=5bQ
r3=5cQ
r4=5dQ
r5=5eQ
rsz=cram&.|smY|#T|wide|v#n|tY|r#5|cr#led|#3|split-le$;|&W9|domed
rra=$+i&ovault|embalmA#K|m#;nA$*|$ f-c&Stomb|hYJ$"s|sar&"hagus#f|&Gs' cX|fl#yDcrypt|b~-f8Dpit
rrb=$0|$h&nOn|f&y&1|b#Bro(|#,#GJ6lagm$ns|b~-*C&'&<|c#'E#.ot sprG|$# #4Dby lava|sink&*e
rrc=$Er&,s|arm#;y|kit#>n|$w p(|thrS#K|li#xry|$*|s$!e#K|wX #K|map #K
rrd=shr#P|sanctuary|v#Gry|reliquary|meditat$B cX|bX#f|s&gp$!ium|cloisR|font#f
rre=junct$BJ$#s|cisRn|slu#^ #K|c&Ssect$B|r#Bn#G|#Fs'&n#>|oOf#3#f|#-$ts' #K|#tf#3 oOCriO
rse=#gdamp Wth|#gi&cnse|#grot|#g$Re|drippA&} echoes|utR s#{&c|&P$aummG|2weet flor&osc#h|N $C t#nesJm*8|N $C "#4F6le
rft=4r&,D$"|#?oolJ7 &}|4&SceilG|s$Lch #Vks`CwYs|#?*0$D r&?0bo#2s|#7altarE#b f#3&:|p#{sJrub#o|#7i#m c#@, #r &9n|b#ls$pves, m(#C# |#pXE#Y&9 goA$T|)rok0cl#/#-k $w|g#3A$hs|#wrescoKseems/ move|webs #_#uck #_&lt#!s|a thrSm&(Jb~s
rco=>|>|>|#M|#M|#M|&t|&t|#e:#Nrk}|$wD#e$Z$s}|pu&D$Zpuz}|#SS"#9e$Zrnp}
clu=Nre#d#b #*s|$[w#_draggD#t|a$Jte "pinnDtoCwY|#w&6 &~ smoul#1s|N &5 #r "$ErD&0m th"$Q|#SSscr$3D#parnG|Nre#d&^nsJ#wH|N d$x has$Pbe0touchD#0yWs
rmo=$^g}Zrats|#.ung&ighoul|2l#sAogre|2#4Jbats|4r#sAooze|aZ$I#1|#Y#Gl#k gh(|4#' bW|a #e ch#GKb$ns|#:Str$M|$^e} &UmblA*Rs|#p#5DwyOn|$>|#EargoyleKisn'tM$"
trp=#?r#k&1 pl$o fir1d$5s|N f&)r tilts/w#2Mpit|#?ortc${"slams $T|g#_s#ss?Cv#hs|)l&( swGs?CwY|#Yune fl# 1bl#+AlH|a net$aops? $g|N ceilAs#3#C#3&:|#Elyph saps#Ur *Cngth
puz=th#Q leOsF#Y#a $g Nm|$"sKm$x &E S#j|4h#GE4$_Al#/|#q&QK&3wsMdif&b#h #K|sc$FsKm$x bala&cEgV|2k${K#) #0r#as|t#{sKhum#"0$@ppDon
rnp=#:( explorer|#?ris~r #0ch#!s|#Yi$s p$5y|a$j&mliv1#9e|a #i*Mt sXAoddit$y|#Eh(&m$:#=$pp|#p#5DknH|#qad al#>$Yt
rex=n~, exceptC#j&k|S&W9 arch#j|two, SchokedErub#o|a #c #rF#:ad#1 $T|th#Q, Y&jrk|f#; #rs, Y alike|a _p#r #}f&)r|2$6 #r *PCfeat&1
t1=$baB
t2=$bbB
t3=$bcB
t4=$bdB
t5=$beB
t6=$bfB
t7=$bgB
t8=$bhB
t9=$biB
efa=aZ$I#1#Xweb $Vp&+|*Tb#Ai#=&$A#_w#ycutRs|)WE$`cubs|a t#Q $Irit&m&!sMr#a|{d-h} gob&XsEstol0ch$Wens|#.uge boar|#:( &ht&K|#YAof $hs hummA&R|#p#D$j|a tr$M $DMfYen-t#Q&u|T|T
efb=aZa&{`Mh8top|{e-i} orc $k`Cmove|#.83tE$Re risG|$^d} hippo$qffs|#Y#/slide $V#j|)ar9 m#5, #b#C&9&&|#Zs|a #9dJw#D pon$y|)urnA&5mh#ve|{d-f} hobgobl#0sc#ts|T|T
efc=#7a$san#> &eblA$g|#Eriff#0$)lAoOh#H|$^d} m$_a#0tr$Ms|#wroz0*R hVA#qap|#Eo#B#9#1Enews|a &W9 ledge oOM#T$aop|4#' m#th bre&+A#4 $C|a $7#X&Udow p&2AoO|#qonasRy bX?Cpeaks|a#"$n-furrDs&= be#n|T|T
efd=lHs #}$Yt l#HAoffCp&+|*Tliz#2*6&hRs|#.ag#Xhut` stilts|s$vAmud|aZ&8ch|$9bog#Rrps1risG|2#4JbitAfl$y|4rocod#{ &`nA*4|a #9onK#)|#Vsh gasKc$31f&6|T|T
efe=w#D $As16m&.G|{f-ba} m$_D$k|#:Sto$=&v|#Er&2f&6 racA$Tw#+|4#haur sc#t|)ride f&8A#9 o&'weddG|aZ&Z#z|vultur1$)lA#SthG|a #[&w|#.*Ip*0_p|T|T
eff=2#A#8&v|#qir#@J#Ere0city|$9*1 $k|aZs$Lp$B|N b~sJ$[enorm#v|#Eu#2Doasis|N $IreJ)uriD$&|$O _#1sF#6c&4ls|$[huge movA$DCs#A|2&7D#xss bot#z $ f-*Q|T|T
efg=2hipwreck`Cr#/s|2e2erp#h&Js$Ae|#Fs' &^n&olHs|a vo#^ sGA&0mCw#'s|$^e}Zcrabs|#w$HAv8#@ #0m#;nG|#:Hh#ve gSdark|#q#k#@&kMbot#z|2$!m r$MAin?Csea|*Tf$H*6$k|T|T
efh=$9gob&Xs haulAore|4#'-#0*P#U|#E#3A$0|$>|#:( m#Pr|#7$Dgr#5 riO|)ee#zKea#=m*8|d&es echoA&0m &5 be#3|4hasmE#Y&9&u|T
efi=)r&C-$T c$5|$$&[$t|$9high#jmen|)#2 l#lA#,#Rmpany|#EYowsEa #b *G|#?lague c$5|#Yuna#j $Ase|#p#5Droy&om#ken#<|a3#$#Xwagon|#wu$i&w|T|T
ean=refuge1f&8A#par|#Eh(#Cfig&1&m*5C#j|#.unR _ckA)e#n|#:( ch#D|a #[Ea #c s$6|#Yi$s#O&K|#q#ken#< birdEa$Jte|a$j#Xshr#P
rea=h(#{|h(#{|$}y|$}y|&li#v|*2ly|f&8G|&hgry|des#W$o|#+if&b#h|w8A#I$Eg#!|frHe&&|a&{,3$Jw
dis=rH`/pJ&;|2t~#Xth9 a#j|w$m#0bow&3t|&5&J,FNy h#'$Pse0&;|onC&5 $QJ#7ob6cle
sgn=#b _cks|2&d0s#{&c|$Re`Cw#+|sc*Fb~s|brok0#xn#>s|2_nge smX|voic1ah#H|birds takAflH|bl#y`Cgr#5|a$aoppDbe#TG|nothA#BY,M&H$Xe surprise|&P music
]=]local ac="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789/<>?_`~()\"["local ad="#$&*"local aa={[=[ing |#`: {dis};first sign: {sgn}| the |ed | with | and |ing|ight|};wind: {wwi};{wef};{wtm}| of | that |};{age} human {job}| a |the|ver|trinket: {trk}|#~o};exits: {rex}|ter|one |{ean}|};temperature: {wt|old|ear|ell|all| giant |en |es |a s| for|a c|a {rsz} {rr|sta|black|ill|row| to|;valuable: {val}|empty, but {clu}| from|tra| on|one|ost|a b|is |};{age} ]=],[=[in |der|ard|low|warm|ound|Nir |an |storm|her|and|at |ly |ild|a g|smuggler|est|ead|to |{rwh} {rdi} {rwr}.|room|magic: {mag}|monsR: {rmo}| {t| adventur|ine|ree| co|some|long| you|mar|per|'s |a r|dwarf prospector|iddle|fresh|heavy| are |treasure| chamber|it smXsJ|ent|mer|way|ess|ook|ron|ast|ble|a w|a m|door|eep|out|thi|ous|a f|bra|ood|tle|ock|ger|che|a p|as |};reaction: {rea};distance|};{rse};feature: {rft};{rc| {job}|speaks| wh|pilgrim|tomor9:|tune tXer|a#Nad}#Nob}|footprint|ind|ice|ash|for|our|a h|a l|ave|wor|ain|age|ts |ile|inC]=],[=[cry6l grotto|ield|back|atch| eOy|art|ecret|dragon|} silO|{d-g} |hor|ion|air|un#1|bar|ale|man|ish|spi| no|unseasonab#C|cor|oll|grey|salt|n't |side|smok|loud|down|N#Na}#Nn}|acrossC|ick|let|mis|: {| dr|{ef|wrappDinMl|tooth|sVier|quiet|above|mush#K|neral| #9mit|rai#1s|ber|ith|ite|ate|hel|gri|eye|val|ker|ail|uck|gu#2|ust|ies|hasMmap/M|N#Nn}F{tm}|snuff box|aZc#hipede|k#ser|ount|two |talk| ab#t|circ|6tue|#SthA|tunnel|a _vXA|temple|chapel|bur|{c-|hal|har|vel|lea|wan|ugh|son|tor|ste|wer|ull|war]=],[=[fro|ure|ass|sho|ame|far|ire|eal|lee|ope|C#ueves' |whis|oken|zzle|face|eaNr|pri#G|comp|neO | off|Ap$5y|} gV|true|appr#h|hums#"|di6nt|irror|#Bdusk|$MapsD|orn|sha|run|nar|lin|oak|bee|but|fer|nce|udd|rum|gr#'|cri|hun|ry | da| in|cur|#"o | ca|al |#wam#v b#2|{cf-cf}|{fa-fa}|animals|_p:#Nrp}| bridge|`C$Aizon| proc#k$B|ket|iss|ric|ton|den|red|ott|oon|sun|st8|ade|loo|cop|tin|ist|pos|ned|hol|ath|sig|ner|ack|you|ped|ers|wn |atC|ask|clW|now|sl#s|waR]=],[=[it |desert|friend|people|itself|points|-folk |mund|etal|ham#i|plum|wWs |stre|m8er|jewX|atRD|body|al#js|idd0|anRn|c#Ale|any |chan|, {b|turn|beh#+|$+ied|$Lpse|cool|$^f} ]=]}local av="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/<>?_`~()\"[#$&*+^ ,;.:'-!@={}"local O,ab=24,10 local function K(f,c)return f:match(("[^|]*|"):rep(c-1).."([^|]*)")end local function ag(f)return select(2,f:gsub("|",""))+1 end local function Q(f)f=f:gsub("(["..ad.."])(.)",function(V,i)return Q(K(aa[ad:find(V,1,true)+1],av:find(i,1,true)))end)return(f:gsub("["..ac.."]",function(i)return Q(K(aa[1],ac:find(i,1,true)))end))end local G=1 local function F(u)G=(G*1103515245+12345)%2147483648 return(G>>16)%u+1 end local function aB(c)local g=_:find("\n"..c.."=",1,true)return _:match("[^\n]*",g+#c+2)end local function y(c)local f=aB(c)return Q(K(f,F(ag(f))))end local function P(f)return(f:gsub("^%l",string.upper))end local function as(f)return P((f:gsub("(%a)%1%1","%1%1")))end local function S(i,e)e=e or("ccdde"):sub(F(5)):sub(1,1)return as(y(i.."a")..y(i.."b")..y(i..e))end local function ar(i)return as(y(i.."f")..y(i.."g"))end local function ak(f)return tonumber((f:gsub("%l",function(i)return i:byte()-97 end)))end local function ai(f)return(f:gsub("{(.-)}",function(c)local g,p=c:match("^(%l+)%-(%l+)$")if g then g=ak(g)return F(ak(p)-g+1)+g-1 end local b,i=c:sub(1,1),c:sub(2)if b=="@"then return S(i).." "..ar(i)end if b=="!"then return S(i)end return ai(y(c))end))end local function az(C)return P(C:gsub("%f[%a]([Aa]) ([AEIOUaeiou])","%1n %2"))end local function aJ(C)return P((C:gsub("%f[%w'](%l)",string.upper):gsub(" And "," and "):gsub(" Of "," of ")))end local o={{"Names","","Culture","Common|Elvish|Dwarven|Halfling|Orcish|Northern|Imperial|Desert"},{"NPC","np"},{"Tavern","tv"},{"Loot","l","Size","Pocket|Purse|Stash|Hoard"},{"Rumour","ru"},{"Weather","w","Season","Spring|Summer|Autumn|Winter"},{"Dungeon room","r","Kind","Crypt|Cave|Fortress|Temple|Sewer"},{"Encounter","t","Terrain","Forest|Hills|Mountains|Marsh|Plains|Desert|Coast|Underground|Road"},}local ax="cedhoniz"local ay={"Feminine: ","Masculine: ","Neutral: "}local function am(e,L)return o[e][3]and K(o[e][4],L)end local function x(e)return o[e][3]and ag(o[e][4])or 0 end local function T(a)G=a.s F(2)local m={}if a.g==1 then local i,R=ax:sub(a.o,a.o),{}m[1]=am(1,a.o).." names"for d=1,8 do local N=("cccdddee"):sub(d,d)R[d]=S(i,N)m[d+1]=ay[N:byte()-98]..R[d].." "..ar(i)end a.h=table.concat(R,", ")else for C in(ai(y(o[a.g][2]..(o[a.g][3]and a.o or"")))..";"):gmatch("(.-);")do m[#m+1]=az(C)end if a.g==3 then m[1]=aJ(m[1])end a.h=m[1]end return m end local function I(a)if not a.h then T(a)end return a.h end local function D(a)local z=o[a.g]return z[1]..(z[3]and" ("..am(a.g,a.o)..")"or"")end local s={1,0,0,1,0,1,1,1}local e=2 local k local n,q={},{}local E=0 local l,j,t,H="menu",2,nil,false local w,r local function aI(g,p)return g.g==p.g and g.o==p.o and g.s==p.s end local function A(b,a)for d,N in ipairs(b)do if aI(N,a)then return d end end end local function ah(b)local L={}for d,a in ipairs(b)do L[d]=a.g.."."..a.o.."."..a.s end return table.concat(L,",")end local function M()snail.save(table.concat({"G1",e,table.concat(s,"."),E,ah(n),ah(q)},"|"))end local function ao(f,b,aE)for g,p,i in f:gmatch("(%d+)%.(%d+)%.(%d+)")do g,p=tonumber(g),tonumber(p)if o[g]and#b<aE and(p==0)==(x(g)==0)and p<=x(g)then b[#b+1]={g=g,o=p,s=tonumber(i)}end end end local function aD()local f=snail.load()if type(f)~="string"or f:sub(1,3)~="G1|"then return end local v={}for Y in(f.."|"):gmatch("([^|]*)|")do v[#v+1]=Y end e=o[tonumber(v[2])]and tonumber(v[2])or 2 local d=0 for Y in(v[3]or""):gmatch("%d+")do d=d+1 if o[d]then s[d]=math.max(x(d)>0 and 1 or 0,math.min(x(d),tonumber(Y)))end end E=tonumber(v[4])or 0 ao(v[5]or"",n,O)ao(v[6]or"",q,ab)end local function aH(a)local d=A(q,a)if d then table.remove(q,d)end table.insert(q,1,a)q[ab+1]=nil end local function aq(a)if k and k~=a then k.L=nil end k=a a.L=a.L or T(a)end local function X()E=E+1 aq({g=e,o=s[e],s=math.random(1,2147483646)})aH(k)M()end local function al()l="gen"for ae,a in ipairs(q)do if a.g==e and a.o==s[e]then return aq(a)end end X()end local function at(a)local d=A(n,a)if d then table.remove(n,d)t="Unpinned"elseif#n>=O then t=O.." pins is the most. Unpin one first."else table.insert(n,1,{g=a.g,o=a.o,s=a.s,h=a.h})t="Pinned"end M()end local function J()local b={}if k then b[1]="pin"end for d=1,#o do b[#b+1]=d end b[#b+1]="pins"b[#b+1]="recent"return b end local function aG(h)if h=="pin"then return(A(n,k)and"Unpin: "or"Pin: ")..D(k).." - "..I(k)end if h=="pins"then return"Pinned results ("..#n..")"end if h=="recent"then return"Recent results ("..#q..")"end return D({g=h,o=s[h]})end local function aF(c)local b=J()local h=b[j]if c=="up"then j=(j-2)%#b+1 elseif c=="down"then j=j%#b+1 elseif(c=="left"or c=="right")and type(h)=="number"and x(h)>0 then s[h]=(s[h]-1+(c=="left"and-1 or 1))%x(h)+1 M()elseif c=="ok"then if h=="pin"then at(k);l="gen"elseif h=="pins"or h=="recent"then w,l,j=h,"list",1 for ae,a in ipairs(h=="pins"and n or q)do I(a)end else e=h;al()end end end local function aA(c)local u=x(e)if c=="ok"then X()elseif c=="left"or c=="right"then e=(e-1+(c=="left"and-1 or 1))%#o+1 al()M()elseif(c=="up"or c=="down")and u>0 then s[e]=(s[e]-1+(c=="up"and-1 or 1))%u+1 X()elseif c=="top"then l,j="menu",1 end end local function B()return w=="pins"and n or q end local function Z(d)local b=B()local U=b[r]if U and U~=k then U.L=nil end r=d b[r].L=b[r].L or T(b[r])end local function aC(c)local b=B()if c=="top"then l,j="menu",#J()-(w=="pins"and 1 or 0)elseif#b==0 then return elseif c=="up"then j=(j-2)%#b+1 elseif c=="down"then j=j%#b+1 elseif c=="ok"then l="view";Z(j)end end local function aK(c,g)local b=B()local a=b[r]if c=="top"then l,j="list",r elseif c=="left"or c=="right"then Z((r-1+(c=="left"and-1 or 1))%#b+1)elseif c=="ok"then if A(n,a)and not g then H=true;return end at(a)if w=="pins"then if#n==0 then l,j="list",1 else Z(math.min(r,#n))end end end end function key(c)if l=="menu"and c=="top"then return end t=nil local g=H H=false if l=="menu"then aF(c)elseif l=="gen"then aA(c)elseif l=="list"then aC(c)else aK(c,g)end end local aw=("...................."):rep(3,"/")local function ap(b,af,W)local au=math.max(1,math.min(af-W//2,#b-W+1))for d=au,math.min(#b,au+W-1)do snail.row(b[d]:sub(1,90),d==af)end end local function aj(m)if#m[1]<=32 then snail.board(aw,nil,m[1])else snail.text(m[1])end for d=2,#m do snail.text(m[d])end end function draw()if l=="menu"then snail.title("Game Master's Toolkit")snail.status(t or(k and"BACK again to leave"or"Pick a table to roll on"))local b={}for d,h in ipairs(J())do b[d]=aG(h)end ap(b,j,14)if not k then snail.small("OK rolls, LEFT/RIGHT changes table, UP/DOWN its option. BACK, then OK pins.")end local h=J()[j]snail.hint("BACK leave  OK choose"..(type(h)=="number"and x(h)>0 and"  L/R option"or"").."  UP/DN move")elseif l=="gen"then snail.title(D(k))if t then snail.status(t)end aj(k.L)local u=0 for ae,a in ipairs(q)do if a.g==e and a~=k and u<2 then if u==0 then snail.rule()end u=u+1 snail.small("Before: "..I(a):sub(1,80))end end local z=o[e]snail.hint("BACK menu  OK new  L/R table"..(z[3]and"  UP/DN "..z[3]:lower()or""))elseif l=="list"then local b,an=B(),{}snail.title(w=="pins"and"Pinned results"or"Recent results")snail.status(t or(#b==0 and""or#b..(w=="pins"and" pinned"or" recent")))for d,a in ipairs(b)do an[d]=D(a)..": "..I(a)end ap(an,j,15)if#b==0 then snail.text(w=="pins"and"Nothing pinned yet."or"Nothing rolled yet.")snail.small("To pin a result: BACK while it's on screen, then OK.")end snail.hint(#b>0 and"BACK menu  OK open  UP/DN move"or"BACK menu")else local b=B()local a=b[r]local V=A(n,a)snail.title(D(a))snail.status(t or(H and"Press OK again to unpin")or((w=="pins"and"Pin "or"Recent ")..r.." of "..#b))aj(a.L)snail.hint("BACK list  OK "..(V and"unpin"or"pin").."  L/R next")end end function start()aD()math.randomseed(os.time(),E)j=e end
