A friend of mine who's a programmer was able to make a solution.
His version of the slowWrite command works like the old one but includes a 3rd argument that if 'true' it makes a new line like SlowPrint does.
Just for convenience I added a slowPrint function that adds the new line without an argument for those that want to easily swap out existing code.
The code is as is, as frankly I don't entirely understand all of it. It's a level well over my skill.
It seems to work great for me.
The only bug I know of is if you enter a single word that is longer than the screen it may throw an error. Just make sure no single word is longer than space on your terminal or monitor and you should be fine.
function slowWrite( sText, iRate, bNewLine )
local iSleep = (1 / 20) -- Default rate
local iScrWidth,iScrHeight = term.getSize()
local iScrPos,y = term.getCursorPos()
local sWord
local bFirst = true
local iLen
if (iRate and iRate > 0) then --If nil ignore iRate
iSleep = 1 / iRate
end
sText = tostring( sText )
for sWord in string.gmatch(sText, "%S+") do
iLen = string.len(sWord)
if ((iLen + iScrPos) > iScrWidth) then
write("\n")
iScrPos = iLen
else
if not bFirst then
sWord = " "..sWord
iLen = iLen + 1
else
bFirst = false
end
iScrPos = iScrPos + iLen
end
for i=1,iLen do
sleep(iSleep)
term.write(string.sub(sWord,i,i))
end
bFirst = false
end
if bNewLine then
write("\n");
end
end
function slowPrint( sText, iRate )
slowWrite( sText, iRate, true)
end