&nc ( {} )

&cont ( }{ )

&shallowblend ( &nc ~1 ~2 ~3 ~4 ~5 ~6 ~7 ~8 ~9 ~a ~b ~c ~d ~e ~f )

&voidblend ( &nc *1 *2 *3 *4 *5 *6 *7 *8 *9 *a *b *c *d *e *f )

&shallowblenda ( &nc &nc &nc ~3 &nc ~5 &nc ~7 &nc &nc ~a ~b ~c ~d ~e ~f )

&shallow ( ~~ ~* ~0 &shallowblend )

&waterblend ( &nc -1 -2 -3 -4 -5 -6 -7 -8 -9 -a -b -c -d -e -f )

&waterblenda ( &nc &nc &nc -3 &nc -5 &nc -7 &nc &nc -a -b -c -d -e -f )

&nwater ( -- -* -0 &waterblend )

&deepwaterblend ( &nc _1 _2 _3 _4 _5 _6 _7 _8 _9 _a _b _c _d _e _f )

&deepwaterblenda ( &nc &nc &nc _3 &nc _5 &nc _7 &nc &nc _a _b _c _d _e _f )

&road ( /0 /1 /2 /3 /4 /5 /6 /7 /8 /9 /a /b /c /d /e /f /g )

&roadblend ( /g /b /e /a /c /8 /d /9 /3 /7 /2 /6 /0 /4 /1 /5 )

&deepwater ( __ _* _0 &deepwaterblend )

&water ( ~9 &shallow &nwater &deepwater b~ )

&hillsblend ( &nc {1 {2 {3 {4 {5 {6 {7 {8 {9 {a {b {c {d {e {f )

&watergrassblend ( &nc &nc &nc ~# &nc ~% &nc ~& &nc &nc ~A ~B ~C ~D ~E ~F )

&voidgrassblend ( &nc &nc &nc .g &nc .h &nc .i &nc &nc .j .k .l .m .n &nc )

&watertreeblend ( &nc &nc &nc tG &nc tH &nc tI &nc &nc tJ tK tL tM tN tO )

&waterhillblend ( &nc &nc &nc {G &nc {H &nc {I &nc &nc {J {K {L {M {N {O )

&voidhillblend ( &nc &nc &nc {g &nc {h &nc {i &nc &nc {j {k {l {m {n &nc )

&watermountblend ( &nc &nc &nc ^G &nc ^H &nc ^I &nc &nc ^J ^K ^L ^M ^N ^O )

&voidmountblend ( &nc &nc &nc ^g &nc ^h &nc ^i &nc &nc ^j ^k ^l ^m ^n &nc )

&mountinnerblend ( &nc &nc &nc ^3 &nc ^5 &nc ^7 &nc &nc ^a ^b ^c ^d ^e ^f )

&hillsinnerblend ( &nc &nc &nc {# &nc {% &nc {& &nc &nc {A {B {C {D {E {F )

&forestinnerblend ( &nc &nc &nc |# &nc |% &nc |& &nc &nc |A |B |C |D |E &nc )

&hills ( {{ ^^ ^~ ^. &waterhillblend &watermountblend &mountinnerblend &hillsinnerblend &voidmountblend &voidhillblend )

&objects ( bb && ff oo pp ~p ww ## #> @@ [[ ]] 00 ++ +s aa ar a! << >> w+ ws sE sA sH sT sI sP sR )

&text ( .a .b .c .d .e .f .g .h .i .j .k .l .m .m .o .p .q .r .s .t .u .v .w .x .y .z ~O )

&runes ( ,A ,B ,C ,D ,E ,F ,G ,H ,I ,J ,K ,L ,M ,M ,O ,P ,Q ,R ,S ,T ,U ,V ,W ,X ,Y ,Z ;T ;E ;N ;A ;S ;D )

&bridge ( == =| =! )

&void ( ** vv )

&rockblend ( &nc r1 r2 r3 r4 r5 r6 r7 r8 r9 ra rb rc rd re rf )

&wall ( xx d, x. rn ~x ?? rr r. ~r w! &rockblend )

&floor ( ,, ~, cc ee gg dd )

&lavablend ( &nc &nc &nc !3 &nc !5 &nc !7 &nc &nc !a !b !c !d !e !f )

&bogblend ( &nc &nc &nc %3 &nc %5 &nc %7 &nc &nc %a %b %c %d %e %f )

&treesinnerblend ( &nc &nc &nc t3 &nc t5 &nc t7 &nc &nc ta tb tc td te tf )

&treesouterblend ( &nc &nc &nc t# &nc t% &nc t& &nc &nc tA tB tC tD tE tF )

&grass ( &treesouterblend .. &watergrassblend &voidgrassblend .! )

&slime ( ~s _s )

&bog ( %% &bogblend )

&lava ( &lavablend !! !_ ~! )

&woods ( tt || |. |t t| |X &treesinnerblend &watertreeblend &forestinnerblend )

&notwoods ( &grass &hillsblend &hills &road &bog )

&dryland ( &grass &hillsblend &woods &hills &road )

&manmade ( &objects &text &runes &wall &floor )

&land ( &dryland &bog )

&void ( ** vv *. &voidblend )

&wet ( &water &slime )

#round off trees
basic ( tt ) ( &treesinnerblend ) ( &notwoods &water &bridge &manmade ) ( &woods }{ )
basic ( .. ) ( &treesouterblend ) ( &woods ) ( &notwoods &water &bridge &manmade }{ )

#detect rivers (water with land on opposite sides)
corner ( ~~ &shallowblend ) ( &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc &nc ~x ) \
 ( &land ) ( &land &water &bridge &manmade ) ( &water &bridge &manmade }{ )
basic ( ~~ &shallowblend ) ( &nc &nc &nc &nc &nc &nc ~x &nc &nc ~x &nc &nc &nc &nc &nc ~x ) \
	( &land ) ( &water &bridge &manmade }{ )

reset

#inner water edges on:
#land
corner ( .. ) ( &watergrassblend ) ( &water ) ( &water ) ( &land &manmade &bridge }{ )
#trees (also resets forest to trees at this point. there isnt enough forest/water edge to worry about)
corner ( || tt &treesinnerblend ) ( &watertreeblend ) ( &water ) ( &water ) ( &land &manmade &bridge }{ )
#hills
corner ( {{ ) ( &waterhillblend ) ( &water ) ( &water ) ( &land &manmade &bridge }{ )
#mountains
corner ( ^^ ) ( &watermountblend ) ( &water ) ( &water ) ( &land &manmade &bridge }{ )

#basic water rounding on rivers
basic ( ~x ) ( &shallowblend ) ( &land &objects rr ) ( &water &bridge &manmade }{ )

reset

#clean up rivers
replace ( ~x ) ( ~~ )

reset
 
#advanced water edging
#could this be done in basic mode by detecting the corner pieces?
edge ( ~~ ) ( &shallowblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )
corner ( ~~ ) ( &shallowblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )

edge ( -- ) ( &waterblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )
corner ( -- ) ( &waterblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )

edge ( __ ) ( &deepwaterblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )
corner ( __ ) ( &deepwaterblend ) ( &land rr &objects ) ( &land rr &objects ) ( &water &bridge &manmade }{ )

#basic edging on hills
basic ( .. ) ( &hillsblend ) ( &hills ) ( &land &water &bridge &manmade &lava }{ )

reset

#mountain corners (where no edging)
corner ( ^^ ) ( &mountinnerblend ) ( &water &grass &woods &bog &road &lava &objects ) ( &water &grass &bog &woods &road &lava &objects ) ( &hills &hillsblend }{ )

#hill corners (where no edging)
corner ( {{ ) ( &hillsinnerblend ) ( &water &grass &woods &bog &road &lava ,, &objects ) ( &water &grass &bog &woods &road &lava ,, &objects ) ( &hills &hillsblend &wall }{ )

#forest corners (where no edging)
corner ( || ) ( &forestinnerblend ) ( &water &grass &bog &road &hills &hillsblend &wall &floor ) ( &water &grass &bog &road &hills &hillsblend &wall &floor ) ( &woods }{ )

#bog corners
basic ( %% ) ( &bogblend ) ( &dryland &objects &wall ) ( &bog &water &bridge &manmade }{ )

#lava corners
basic ( !! ) ( &lavablend ) ( &land &objects &water ~! ) ( &lava &manmade &bridge }{ )

#void inner corners
corner ( .. ) ( &voidgrassblend ) ( &void &bridge ) ( &void &bridge ) ( &lava &water &land &manmade }{ )
corner ( {{ ) ( &voidhillblend ) ( &void &bridge ) ( &void &bridge ) ( &lava &water &land &manmade }{ )
corner ( ^^ ) ( &voidmountblend ) ( &void &bridge ) ( &void &bridge ) ( &lava &water &land &manmade }{ )

#void corners
edge ( &void ) ( &voidblend ) ( &water &lava &land &manmade rr ) ( &water &lava &land &manmade rr ) ( &void &bridge }{ )
corner ( &void ) ( &voidblend ) ( &water &lava &land &manmade rr ) ( &water &lava &land &manmade rr ) ( &void &bridge }{ )

#rock edges

basic ( rn ) ( &rockblend ) ( &land &wet &lava &objects &floor &void ) ( &wall &text &runes }{ )

reset

# roads
basic ( /f ) ( &roadblend ) ( &road ) ( &water &lava &land &manmade &bridge rr )

# bridges
basic ( &bridge ) ( &nc == =| &nc =| &nc =| &nc == == &nc &nc &nc &nc &nc &nc ) ( &water &void &lava ) ( &manmade &dryland )

#randomise void
random ( ** ) [ 0.5 ] ( ** *. )

#random ( || ) [ 0.6 ] ( || |t |X )

#random ( tt ) [ 0.7 ] ( tt t| )
