diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm
index d5b2d222dd..ad5e18d3f7 100644
--- a/code/_globalvars/lists/names.dm
+++ b/code/_globalvars/lists/names.dm
@@ -20,6 +20,8 @@ GLOBAL_LIST_INIT(megacarp_first_names, world.file2list("strings/names/megacarp1.
GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.txt"))
GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt"))
+GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt"))
+GLOBAL_LIST_INIT(adverbs, world.file2list("strings/names/adverbs.txt"))
GLOBAL_LIST_INIT(adjectives, world.file2list("strings/names/adjectives.txt"))
GLOBAL_LIST_INIT(dream_strings, world.file2list("strings/dreamstrings.txt"))
//loaded on startup because of "
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index bfbad559e1..e3c69f567e 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -1,22 +1,61 @@
-/mob/living/carbon/proc/dream()
- set waitfor = 0
- var/list/dreams = GLOB.dream_strings.Copy()
- for(var/obj/item/bedsheet/sheet in loc)
- dreams += sheet.dream_messages
- var/list/dream_images = list()
- for(var/i in 1 to rand(3, rand(5, 10)))
- dream_images += pick_n_take(dreams)
- dreaming++
- for(var/i in 1 to dream_images.len)
- addtimer(CALLBACK(src, .proc/experience_dream, dream_images[i]), ((i - 1) * rand(30,60)))
- return 1
-
/mob/living/carbon/proc/handle_dreams()
- if(prob(5) && !dreaming)
+ if(prob(10) && !dreaming)
dream()
-/mob/living/carbon/proc/experience_dream(dream_image)
- dreaming--
- if(stat != UNCONSCIOUS || InCritical())
+/mob/living/carbon/proc/dream()
+ set waitfor = FALSE
+ var/list/dream_fragments = list()
+ var/fragment = ""
+
+ dream_fragments += "you see"
+
+ //Subject
+ fragment += pick(GLOB.dream_strings)
+ if(prob(50))
+ fragment = replacetext(fragment, "%ADJECTIVE%", pick(GLOB.adjectives))
+ else
+ fragment = replacetext(fragment, "%ADJECTIVE% ", "")
+ if(findtext(fragment, "%A% "))
+ fragment = "\a [replacetext(fragment, "%A% ", "")]"
+ dream_fragments += fragment
+
+ //Verb
+ fragment = ""
+ if(prob(50))
+ if(prob(35))
+ fragment += "[pick(GLOB.adverbs)] "
+ fragment += pick(GLOB.ing_verbs)
+ else
+ fragment += "will "
+ fragment += pick(GLOB.verbs)
+ dream_fragments += fragment
+
+ if(prob(25))
+ dream_sequence(dream_fragments)
return
- to_chat(src, "... [dream_image] ...")
+
+ //Object
+ fragment = ""
+ fragment += pick(GLOB.dream_strings)
+ if(prob(50))
+ fragment = replacetext(fragment, "%ADJECTIVE%", pick(GLOB.adjectives))
+ else
+ fragment = replacetext(fragment, "%ADJECTIVE% ", "")
+ if(findtext(fragment, "%A% "))
+ fragment = "\a [replacetext(fragment, "%A% ", "")]"
+ dream_fragments += fragment
+
+ dreaming = TRUE
+ dream_sequence(dream_fragments)
+
+/mob/living/carbon/proc/dream_sequence(list/dream_fragments)
+ if(stat != UNCONSCIOUS || InCritical())
+ dreaming = FALSE
+ return
+ var/next_message = dream_fragments[1]
+ dream_fragments.Cut(1,2)
+ to_chat(src, "... [next_message] ...")
+ if(LAZYLEN(dream_fragments))
+ addtimer(CALLBACK(src, .proc/dream_sequence, dream_fragments), rand(10,30))
+ else
+ dreaming = FALSE
diff --git a/strings/dreamstrings.txt b/strings/dreamstrings.txt
index 72e0fe3764..3af4872b6c 100644
--- a/strings/dreamstrings.txt
+++ b/strings/dreamstrings.txt
@@ -1,61 +1,44 @@
-a familiar face
-a crewmember
-a security officer
-a doctor
-an engineer
-a miner
-a slime
-an alien
-a traitor
-an ally
-a scientist
-a monkey
-a loved one
-a monster
-the captain
-a hat
-an ID card
-a bottle
-a toolbox
-a gun
+%A% %ADJECTIVE% familiar face
+%A% %ADJECTIVE% crewmember
+%A% %ADJECTIVE% security officer
+%A% %ADJECTIVE% doctor
+%A% %ADJECTIVE% engineer
+%A% %ADJECTIVE% miner
+%A% %ADJECTIVE% slime
+%A% %ADJECTIVE% alien
+%A% %ADJECTIVE% traitor
+%A% %ADJECTIVE% ally
+%A% %ADJECTIVE% scientist
+%A% %ADJECTIVE% monkey
+%A% %ADJECTIVE% loved one
+%A% %ADJECTIVE% monster
+the %ADJECTIVE% captain
+%A% %ADJECTIVE% hat
+%A% %ADJECTIVE% ID card
+%A% %ADJECTIVE% bottle
+%A% %ADJECTIVE% toolbox
+%A% %ADJECTIVE% gun
the sun
the engine
the station
-a planet
+%A% %ADJECTIVE% planet
the medical bay
-the bridge
-the brig
-a shuttle
-a laboratory
+the %ADJECTIVE% bridge
+the %ADJECTIVE% brig
+%A% %ADJECTIVE% shuttle
+%A% %ADJECTIVE% laboratory
Nanotrasen
the Syndicate
the Wizard Federation
-blood
-plasma
-air
-warmth
-freezing
-wind
-darkness
-light
-life
-death
-blinking lights
-healing
-power
-respect
-riches
-space
-time
-deep space
-a crash
-a catastrophe
-happiness
-pride
-a fall
+%ADJECTIVE% blood
+%ADJECTIVE% plasma
+%ADJECTIVE% wind
+%ADJECTIVE% darkness
+%ADJECTIVE% light
+%ADJECTIVE% death
+%ADJECTIVE% blinking lights
+%ADJECTIVE% power
+%ADJECTIVE% riches
water
-flames
-ice
-melons
-flying
-voices from all around
\ No newline at end of file
+%ADJECTIVE% flames
+some %ADJECTIVE% melons
\ No newline at end of file
diff --git a/strings/names/adverbs.txt b/strings/names/adverbs.txt
new file mode 100644
index 0000000000..89153ff106
--- /dev/null
+++ b/strings/names/adverbs.txt
@@ -0,0 +1,135 @@
+accidentally
+angrily
+annually
+anxiously
+awkwardly
+badly
+blindly
+boastfully
+boldly
+bravely
+briefly
+brightly
+busily
+calmly
+carefully
+carelessly
+cautiously
+cheerfully
+clearly
+correctly
+courageously
+crossly
+cruelly
+daily
+defiantly
+deliberately
+doubtfully
+easily
+elegantly
+enormously
+enthusiastically
+equally
+eventually
+exactly
+faithfully
+fatally
+fiercely
+fondly
+foolishly
+fortunately
+frantically
+gently
+gladly
+gracefully
+greedily
+happily
+hastily
+honestly
+hourly
+hungrily
+innocently
+inquisitively
+irritably
+irritatingly
+joyously
+justly
+kindly
+laughingly
+lazily
+loosely
+loudly
+madly
+merrily
+monthly
+mortally
+mysteriously
+nakedly
+nearly
+neatly
+nervously
+never
+noisily
+obediently
+obnoxiously
+obnoxiously
+often
+painfully
+perfectly
+politely
+poorly
+powerfully
+promptly
+punctually
+quickly
+quietly
+rapidly
+rarely
+really
+recklessly
+regularly
+reluctantly
+repeatedly
+rightfully
+roughly
+rudely
+sadly
+safely
+seldom
+selfishly
+seriously
+shakily
+sharply
+shrilly
+shyly
+silently
+sleepily
+slowly
+smoothly
+softly
+solemnly
+sometimes
+soon
+speedily
+stealthily
+sternly
+successfully
+suddenly
+suspiciously
+swiftly
+tenderly
+tensely
+thoughtfully
+tightly
+tomorrow
+truthfully
+underhandedly
+unexpectedly
+victoriously
+violently
+vivaciously
+warmly
+weakly
+wearily
+wildly
+yearly
\ No newline at end of file
diff --git a/strings/names/ing_verbs.txt b/strings/names/ing_verbs.txt
new file mode 100644
index 0000000000..5869e8a170
--- /dev/null
+++ b/strings/names/ing_verbs.txt
@@ -0,0 +1,929 @@
+abiding
+acceding
+accelerating
+accepting
+accomplishing
+achieving
+acquiring
+activating
+adapting
+adding
+addressing
+administering
+admiring
+admitting
+adopting
+advising
+affording
+agreeing
+alerting
+alighting
+allowing
+altering
+amusing
+analyzing
+announcing
+annoying
+answering
+apologizing
+appearing
+applauding
+appointing
+appraising
+appreciating
+approving
+arbitrating
+arguing
+arising
+arranging
+arresting
+arriving
+ascertaining
+asking
+assembling
+assessing
+assisting
+assuring
+attaching
+attacking
+attaining
+attempting
+attending
+avoiding
+awaking
+baking
+balancing
+banging
+banning
+barring
+bathing
+bating
+battling
+beaming
+bearing
+beating
+becoming
+begging
+beginning
+behaving
+beholding
+being
+belonging
+besetting
+betting
+biding
+binding
+biting
+bleaching
+bleeding
+blessing
+blinding
+blinking
+blotting
+blowing
+blushing
+boasting
+boiling
+bombing
+booking
+boring
+borrowing
+bouncing
+bowing
+boxing
+braking
+breaking
+breathing
+breeding
+broadcasting
+bruising
+brushing
+budgeting
+building
+bumping
+burning
+bursting
+burying
+busting
+buying
+buzzing
+calculating
+calling
+camping
+caring
+carrying
+carving
+casting
+cataloging
+catching
+causing
+challenging
+changing
+charging
+chasing
+cheating
+checking
+cheering
+chewing
+choking
+choosing
+chopping
+claiming
+clarifying
+classifying
+cleaning
+clearing
+clinging
+clipping
+closing
+clothing
+coaching
+coiling
+collecting
+coloring
+combing
+coming
+commanding
+communicating
+comparing
+competing
+compiling
+complaining
+completing
+composing
+computing
+conceiving
+concentrating
+concerning
+concluding
+conducting
+confessing
+confronting
+confusing
+connecting
+conserving
+considering
+consisting
+consolidating
+constructing
+containing
+contracting
+controlling
+converting
+coordinating
+copying
+correcting
+correlating
+costing
+coughing
+counseling
+counting
+covering
+cracking
+crashing
+crawling
+creating
+creeping
+critiquing
+crossing
+crushing
+crying
+curing
+curling
+curving
+cutting
+cycling
+damaging
+damming
+dancing
+dealing
+decaying
+deceiving
+deciding
+decorating
+defining
+delaying
+delegating
+delighting
+delivering
+demonstrating
+depending
+describing
+deserting
+deserving
+designing
+detailing
+detecting
+determining
+developing
+devising
+diagnosing
+digging
+directing
+disagreeing
+disappearing
+disapproving
+discovering
+disliking
+dispensing
+displaying
+disproving
+dissecting
+distributing
+diverting
+dividing
+diving
+doing
+doubling
+doubting
+drafting
+dragging
+draining
+dramatizing
+drawing
+dreaming
+dressing
+drinking
+dripping
+driving
+dropping
+drowning
+drumming
+drying
+dwelling
+earning
+eating
+editing
+educating
+eliminating
+embarrassing
+employing
+enacting
+encouraging
+ending
+enduring
+enforcing
+engineering
+enhancing
+enjoying
+enlisting
+ensuring
+entering
+entertaining
+establishing
+estimating
+evaluating
+examining
+exceeding
+exciting
+excusing
+executing
+exercising
+exhibiting
+existing
+expanding
+expecting
+expediting
+experimenting
+explaining
+exploding
+expressing
+extending
+extracting
+facilitating
+facing
+fading
+fancying
+fastening
+faxing
+fearing
+feeding
+feeling
+fencing
+fetching
+fighting
+filling
+filming
+finalizing
+financing
+finding
+firing
+fitting
+fixing
+flapping
+flashing
+fleeing
+flinging
+floating
+flooding
+flowering
+flowing
+flying
+folding
+following
+fooling
+forbidding
+forcing
+forecasting
+foregoing
+foreseeing
+foretelling
+forgetting
+forgiving
+forming
+formulating
+forsaking
+framing
+freezing
+frightening
+frying
+gazing
+generating
+getting
+giving
+glowing
+glueing
+going
+governing
+grabbing
+graduating
+grating
+greasing
+greeting
+grinding
+grinning
+griping
+groaning
+growing
+guaranteeing
+guarding
+guessing
+guiding
+hammering
+handling
+handwriting
+hanging
+happening
+harassing
+harming
+haunting
+heading
+healing
+heaping
+hearing
+heating
+helping
+hiding
+hitting
+holding
+hooking
+hoping
+hovering
+hugging
+humming
+hunting
+hurrying
+hurting
+hypothesizing
+identifying
+ignoring
+imagining
+implementing
+impressing
+improving
+improvising
+including
+increasing
+inducing
+informing
+initiating
+injecting
+injuring
+innovating
+inputing
+inspecting
+installing
+instituting
+instructing
+insuring
+integrating
+intending
+intensifying
+interesting
+interfering
+interlaying
+interpreting
+interrupting
+interviewing
+introducing
+inventing
+inventorying
+investigating
+irritating
+itching
+jailing
+jamming
+jogging
+joining
+joking
+judging
+juggling
+jumping
+justifying
+keeping
+killing
+kissing
+kneeling
+knitting
+knocking
+knotting
+knowing
+landing
+lasting
+laughing
+launching
+laying
+leading
+leaning
+learning
+leaving
+lecturing
+lending
+letting
+leveling
+licensing
+licking
+lifting
+lightening
+lighting
+liking
+listing
+living
+loading
+locking
+logging
+longing
+looking
+losing
+loving
+lying
+maintaining
+making
+managing
+manipulating
+manning
+manufacturing
+mapping
+marching
+marketing
+marrying
+matching
+mating
+mattering
+meaning
+measuring
+meddling
+mediating
+meeting
+melting
+memorizing
+mending
+mentoring
+milking
+mining
+misleading
+missing
+mistaking
+misunderstanding
+mixing
+moaning
+modeling
+modifying
+monitoring
+mooring
+motivating
+moving
+muddling
+mugging
+multiplying
+murdering
+nailing
+naming
+navigating
+needing
+negotiating
+nesting
+nodding
+nominating
+normalizing
+noticing
+noting
+numbering
+obeying
+objecting
+observing
+occurring
+offending
+offering
+officiating
+opening
+operating
+ordering
+organizing
+orienteering
+originating
+overcoming
+overdoing
+overdrawing
+overflowing
+overhearing
+overtaking
+overthrowing
+owing
+owning
+packing
+paddling
+painting
+parking
+participating
+parting
+passing
+pasting
+patting
+pecking
+pedaling
+peeling
+peeping
+perceiving
+performing
+permitting
+phoning
+photographing
+picking
+piloting
+pinching
+pining
+pinpointing
+planing
+planting
+pleading
+pleasing
+plugging
+poking
+polishing
+possessing
+posting
+pouring
+praising
+praying
+preaching
+preceding
+predicting
+preferring
+preparing
+prescribing
+presenting
+presetting
+presiding
+pressing
+pretending
+preventing
+pricking
+processing
+procuring
+producing
+professing
+programming
+progressing
+projecting
+promising
+promoting
+proofreading
+proposing
+protecting
+providing
+proving
+publicizing
+pulling
+pumping
+punching
+puncturing
+purchasing
+pushing
+putting
+questioning
+queueing
+quitting
+racing
+radiating
+raising
+ranking
+rating
+reaching
+reading
+realigning
+realizing
+reasoning
+receiving
+recognizing
+reconciling
+recording
+recruiting
+reducing
+referring
+reflecting
+regretting
+regulating
+reigning
+reinforcing
+rejecting
+rejoicing
+relating
+relaxing
+releasing
+relying
+remaining
+remembering
+reminding
+removing
+rendering
+reorganizing
+repairing
+repeating
+replacing
+replying
+representing
+requesting
+rescuing
+researching
+resolving
+responding
+restoring
+restructuring
+retiring
+retrieving
+returning
+reviewing
+revising
+rhyming
+riding
+ringing
+rinsing
+rising
+risking
+robing
+rocking
+rolling
+rotting
+rubbing
+ruining
+ruling
+running
+rushing
+sacking
+satisfying
+sawing
+saying
+scaring
+scattering
+scheduling
+scolding
+scorching
+scraping
+scratching
+screaming
+screwing
+scribbling
+scrubbing
+sealing
+searching
+securing
+seeing
+seeking
+selecting
+selling
+sending
+sensing
+separating
+servicing
+serving
+setting
+settling
+sewing
+shading
+shaking
+shaping
+sharing
+shearing
+shedding
+sheltering
+shining
+shivering
+shocking
+shoeing
+shooting
+shopping
+showing
+shrinking
+shrugging
+shutting
+sighing
+signaling
+signing
+simplifying
+singing
+sining
+sinking
+sipping
+siting
+sketching
+skiing
+skipping
+slapping
+slaying
+sleeping
+sliding
+slinging
+slinking
+slipping
+slitting
+slowing
+smashing
+smelling
+smiling
+smiting
+smoking
+snatching
+sneaking
+sneezing
+sniffing
+snoring
+snowing
+soaking
+solving
+soothing
+soothsaying
+sorting
+sowing
+sparing
+sparking
+sparkling
+speaking
+speeding
+spelling
+spending
+spilling
+spinning
+spiting
+splitting
+spoiling
+spotting
+spraying
+spreading
+springing
+sprouting
+squashing
+squeaking
+squealing
+squeezing
+staining
+stamping
+standing
+staring
+starting
+stealing
+stepping
+sticking
+stimulating
+stinging
+stinking
+stirring
+stitching
+stoping
+storing
+strapping
+streamlining
+strengthening
+striking
+stringing
+striping
+striving
+structuring
+stuffing
+subtracting
+sucking
+suffering
+suggesting
+summarizing
+supplying
+supposing
+surprising
+surrounding
+suspecting
+suspending
+swearing
+sweating
+swelling
+swimming
+swinging
+symbolizing
+systemizing
+tabulating
+taking
+taming
+taping
+targeting
+tasting
+teaching
+teasing
+telephoning
+telling
+tempting
+testing
+thanking
+thriving
+thrusting
+ticking
+tickling
+timing
+tipping
+tiring
+touching
+touring
+towing
+tracing
+trading
+training
+transferring
+transforming
+transporting
+trapping
+treading
+treating
+tricking
+tripping
+trotting
+troubleshooting
+trusting
+trying
+tugging
+tumbling
+tutoring
+twisting
+tying
+typing
+undergoing
+understanding
+undressing
+unfastening
+unifying
+unlocking
+unpacking
+untidying
+updating
+upgrading
+upholding
+using
+utilizing
+verbalizing
+vexing
+visiting
+wailing
+waiting
+waking
+walking
+wandering
+wanting
+warming
+warning
+washing
+watching
+watering
+wearing
+weighing
+welcoming
+wending
+wetting
+whirling
+whispering
+winding
+winking
+wiping
+wishing
+withholding
+withstanding
+wobbling
+wondering
+working
+worrying
+wrapping
+wrecking
+wrestling
+wriggling
+wringing
+writing
+x-raying
+yawning
+yelling
+zipping
+zooming
\ No newline at end of file