UNIVERSE { begin = true who = [] _what = wasteland } _ %UNI ? %UNI.begin { output = in the beginning, the first peoples came to this land from a far-off place. %UNI.begin @= false %UNI.peopling @= true } _ %UNI ? %UNI.peopling && !%UNI.finished_peopling { _p = {PEOPLES} output = the $_p.fullname $_p.from. %UNI.finished_peopling @= #%UNI.who < 2 ? false : true | false %UNI.who @= $_p : %UNI.who +++ $_p } _ %UNI ? %UNI.peopling && %UNI.finished_peopling { output = these people came to build in the wasteland, in the old times. %UNI.peopling @= false [%UNI.who].active @= true [%UNI.who].wandering @= true [%UNI.who].unplaced @= true [%UNI.who].opstr @= while wandering the wasteland } PEOPLES { type = human | orc | ogre | goatman | rabbit dname = fullname = $type.pname of $dname | $dname-$type.pname name = $type.pname from = _what = people } SPLIT_PEOPLES %P { type = %P.type dname = fullname = $type.pname of $dname | $dname-$type.pname name = $type.pname active = true wandering = %P.wandering unplaced = %P.unplaced from = %P.from opstr = %P.opstr location = %P.location _what = people } froms = came from across the great water | crossed the old mountains | walked from the great northern forests | came from the acid wastelands in the south | flew down from the moon human { name = human pname = humans } orc { name = orc pname = orcs } ogre { name = ogre pname = ogres } goatman { name = goatman pname = goatmen } rabbit { name = rabbit pname = rabbits } _ %P ? %P._what == people && %P.active { _p1 = {SPLIT_PEOPLES %P} _p2 = {SPLIT_PEOPLES %P} output = the %P.fullname split apart, and became known as the $_p1.fullname and the $_p2.fullname. %P.active @= false +++ $_p1 $_p2 } _ %P ? %P._what == people && %P.active && %P.wandering && %P.unplaced { _region = {REGION} output = %P.opstr, the %P.fullname came to $_region.fullname. %P.location @= $_region %P.flocation @= %P $_region.adjacent @= [] %P.unplaced @= false +++ $_region } _ %P %R ? %P._what == people && %P.active && %P.wandering && %P.location == %R && #%R.adjacent < 4 { _region = {REGION} output = leaving %R.fullname, %P.fullname came to $_region.fullname. %R.adjacent @= $_region : %R.adjacent $_region.adjacent @= [%R] %P.location @= $_region +++ $_region } _ %P %R ? %P._what == people && %P.active && %P.wandering && %P.location == %R && #%R.adjacent >= 4 { _region = <%R.adjacent> output = leaving %R.fullname, %P.fullname came to $_region.fullname. %P.location @= $_region } _ %P %R %S ? %P._what == people && %P.active && %P.wandering && %P.location == %R && #%R.adjacent < 4 && %S._what == region && #%S.adjacent < 4 { output = leaving %R.fullname, %P.fullname came to %S.fullname. %R.adjacent @= %S : %R.adjacent %S.adjacent @= %R : %S.adjacent %P.location @= %S } REGION { fullname = the features = [] prepstr = within _what = region } region adjective = great | dry | metal | crumbling | glass | salt | howling | burning | big | acid | fuming | lost | lava | burnt | painted region noun = dunes | wastes | canyons | hills | valley | mountains | flats | delta | peak | mesas REGION { fullname = features = [] ruins = true prepstr = within _what = region } ruin noun = wreck | ruins | mines | crash | hull REGION { fullname = the features = [] water = true prepstr = within _what = region } REGION { fullname = the sea of features = [] water = true prepstr = along _what = region } water adjective = acid | fuming | boiling | acrid | foul | oil | slimy water noun = bog | fen | marsh | swamp | mire sea adjective = fog | silt | mud | oil _ %P %R ? %P._what == people && %P.active && %P.location == %R && %P.wandering { _feature = {FEATURE} output = %R.prepstr %R.fullname, the %P.fullname came across $_feature.fullname %R.features @= $_feature : %R.features $_feature.within @= %R %P.flocation @= $_feature +++ $_feature } FEATURE { fullname = _what = feature } feature adjective = cactus | tumbleweed | sandy | scrubgrass | vulture | bramble | winding | lush | overgrown feature noun = oasis | cliffs | lull | vale | creek _ %P ? %P._what == people && %P.active && !%P.wandering { output = a group of the %P.fullname left %P.location.fullname, and went wandering. %P.wandering @= true %P.flocation @= %P %P.location @= %P.location.location.within } _ %P %F ? %P._what == people && %P.active && %P.flocation == %F && %P.wandering { _city = {CITY} output = at %P.flocation.fullname, the %P.fullname ceased their wandering, and built their first city, $_city.fullname. %F.built @= [$_city] $_city.location @= %F %P.wandering @= false %P.location @= $_city $_city.members @= %P : $_city.members +++ $_city } CITY { dname = attr = rags | bone | stone | ash | cactus | wild fullname = $dname, city of $attr | $attr city, $dname members = [] _what = city } city name = | ur =

spec = - | ' syl =

p i = TS | TH | D | TZ | AD | B | N | #Nil p v = A | E | I | O | U | Y p f = RR | Z | TH | M | MM | L | LL | R | H | N peoples name = |