initial commit - cross reference with 5th port - obviously has compile errors
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/proc/chatter(message, phomeme, atom/A)
|
||||
// We want to transform any message into a list of numbers
|
||||
// and punctuation marks
|
||||
// For example:
|
||||
// "Hi." -> [2, '.']
|
||||
// "HALP GEROGE MELLONS, that swine, is GRIFFIN ME!"
|
||||
// -> [4, 6, 7, ',', 4, 5, ',', '2', 7, 2, '!']
|
||||
// "fuck,thissentenceissquashed" -> [4, ',', 21]
|
||||
|
||||
var/list/punctuation = list(",",":",";",".","?","!","\'","-")
|
||||
var/regex/R = regex("(\[\\l\\d]*)(\[^\\l\\d\\s])?", "g")
|
||||
var/list/letter_count = list()
|
||||
while(R.Find(message) != 0)
|
||||
if(R.group[1])
|
||||
letter_count += length(R.group[1])
|
||||
if(R.group[2])
|
||||
letter_count += R.group[2]
|
||||
|
||||
spawn(0)
|
||||
for(var/item in letter_count)
|
||||
if (item in punctuation)
|
||||
// simulate pausing in talking
|
||||
// ignore semi-colons because of their use in HTML escaping
|
||||
if (item in list(",", ":"))
|
||||
sleep(3)
|
||||
if (item in list("!", "?", "."))
|
||||
sleep(6)
|
||||
continue
|
||||
|
||||
if(isnum(item))
|
||||
var/length = min(item, 10)
|
||||
if (length == 0)
|
||||
// "verbalise" long spaces
|
||||
sleep(1)
|
||||
chatter_speak_word(A.loc, phomeme, length)
|
||||
|
||||
/proc/chatter_speak_word(loc, phomeme, length)
|
||||
var/path = "sound/chatter/[phomeme]_[length].ogg"
|
||||
|
||||
playsound(loc, path,
|
||||
vol = 40, vary = 0, extrarange = 3, falloff = FALSE, surround = 1)
|
||||
|
||||
sleep((length + 1) * chatter_get_sleep_multiplier(phomeme))
|
||||
|
||||
/proc/chatter_get_sleep_multiplier(phomeme)
|
||||
// These values are tenths of seconds, so 0.5 == 0.05seconds
|
||||
. = 1
|
||||
switch(phomeme)
|
||||
if("papyrus")
|
||||
. = 0.5
|
||||
if("griffin")
|
||||
. = 0.5
|
||||
if("sans")
|
||||
. = 0.7
|
||||
if("owl")
|
||||
. = 0.7
|
||||
Reference in New Issue
Block a user