world/New() ..() spawn() var/L[0] for(var/S in typesof(/smiley)-/smiley) L += S var/A for(A in L) s_smileys += new A
var/s_smileys[0]
smiley var smileys[] iconstate
New() ..() for(var/smiley in smileys) var/new_string = replacetext( replacetext(smiley, "<", "<"), ">", ">" ) if(!cmptext(new_string, smiley)) smileys += new_string
surprised_thoughtful_wink smileys = list("<;|","<;-|","<;^|", "<;o|") iconstate = "surprised/thoughtful wink"
sadistic smileys = list(">=)",">:)",">:-)",">=-)",">=^)",">:^)",">=\]",">:\]",">:-\]", ">=-\]",">=^\]",">:^\]",">:>",">:->",">=->",">=^>",">:^>",">=o>",">:o>", ">=o)",">:o)",">=o\]",">:o\]") iconstate = "sadistic" surprised smileys = list("<=)","<:)","<:-)","<=-)","<=^)","<:^)","<=\]","<:\]","<:-\]", "<=-\]","<=^\]","<:^\]","<:>","<:->","<=->","<=^>","<:^>","<=o>","<:o>", "<=o)","<:o)","<=o\]","<:o\]") iconstate = "surprised" angry smileys = list(">=(",">:(",">:-(",">=-(",">=^(",">:^(",">=\[",">:\[",">:-\[", ">=-\[",">=^\[",">:^\[",">:<",">:-<",">=-<",">=^<",">:^<",">=o<",">:o<", ">=o(",">:o(",">_<",">.<",">o<") iconstate = "angry" sad_b smileys = list("<=(","<:(","<:-(","<=-(","<=^(","<:^(","<=\[","<:\[","<:-\[", "<=-\[","<=^\[","<:^\[","<:<","<:-<","<=-<","<=^<","<:^<","<:o\[","<:o(", "<=o\[","<=o(") iconstate = "sad_b" mad_tongue smileys = list(">=P",">:P",">:oP",">:-P",">=-P",">=^P",">:^P",">:oP",">=oP") iconstate = "mad/tongue" mad_tongue2 smileys = list(">=p",">:p",">:-p",">=-p",">=^p",">:^p",">=þ",">:þ",">:-þ", ">=-þ",">=^þ",">:^þ",">=op",">:op",">=oþ",">:oþ") iconstate = "mad/tongue2" sigh_tongue2 smileys = list("<=p","<:p","<:-p","<=-p","<=^p","<:^p","<=þ","<:þ","<:-þ", "<=-þ","<=^þ","<:^þ","<=op","<:op","<=oþ","<:oþ") iconstate = "sigh/tongue2" sigh_tongue smileys = list("<=P","<:P","<:-P","<=-P","<=^P","<:^P","<=oP","<:oP") iconstate = "sigh/tongue" evil_grin smileys = list(">=D",">:D",">:-D",">=-D",">=^D",">:^D") iconstate = "evil grin" worried_grin smileys = list("<=D","<:D","<:-D","<=-D","<=^D","<:^D") iconstate = "worried grin" naughty_wink smileys = list(">;)",">;-)",">;^)",">;\]",">;-\]",">;^\]",">;>",">;->",">;^>",">;o>", ">;o)") iconstate = "naughty wink" surprised_wink smileys = list("<;)","<;-)","<;^)","<;\]","<;-\]","<;^\]","<;>","<;->","<;^>","<;o>", "<;o)") iconstate = "surprised wink" angry_wink smileys = list(">;(",">;-(",">;^(",">;\[",">;-\[",">;^\[",">;<",">;-<",">;^<",">;o<", ">;o(") iconstate = "angry wink" sad_wink_b smileys = list("<;(","<;-(","<;^(","<;\[","<;-\[","<;^\[","<;<","<;-<","<;^<", "<;o<") iconstate = "sad wink_b" sad_wink_tongue2 smileys = list("<;p","<;-p","<;^p","<;þ","<;-þ","<;^þ","<;oþ","<;op") iconstate = "sad wink/tongue2" sad_wink_tongue smileys = list("<;P","<;-P","<;^P","<;oP") iconstate = "sad wink/tongue" angry_thoughtful_wink smileys = list(">;|",">;-|",">;^|",">;o|") iconstate = "angry/thoughtful wink" skeptical smileys = list(">=|",">:|",">:-|",">=-|",">=^|",">:^|",,">=o|",">:o|") iconstate = "skeptical" confused smileys = list("<=|","<:|","<:-|","<=-|","<=^|","<:^|","<=o|","<:o|") iconstate = "confused" angry_wink_tongue2 smileys = list(">;p",">;-p",">;^p",">;þ",">;-þ",">;^þ",">;oþ",">;op") iconstate = "angry wink/tongue2" angry_wink_tongue smileys = list(">;P",">;-P",">;^P",">;oP") iconstate = "angry wink/tongue" angry_uncertain smileys = list(">:/",">:\\",">=/",">=\\",">:o\\",">:o/",">=^/",">=^\\",">:^/",">:^\\", ">=-/",">=-\\",">:-/",">:-\\") iconstate = "angry/uncertain" frustrated smileys = list(">=o",">:o",">:-o",">=-o",">=^o",">:^o",">=O",">:O",">:-O", ">=-O",">=^O",">:^O",">=oO",">:oO") iconstate = "frustrated" naughty_wink_grin smileys = list(">;D",">;-D",">;^D",">;oD") iconstate = "naughty wink/grin" sheepish_wink_grin smileys = list("<;D","<;-D","<;^D","<;oD") iconstate = "sheepish wink/grin" surprised_b smileys = list("<=o","<:o","<:-o","<=-o","<=^o","<:^o","<=O","<:O","<:-O", "<=-O","<=^O","<:^O","O.O","O_O","<=oO","<:oO") iconstate = "surprised_b" angry_weird smileys = list(">:S",">=S",">=oS",">:oS",">:-S",">=-S",">:^S",">=^S",">:oS",">=oS", ">=}",">={",">:}",">:{",">:@",">:?",">=?",">:-?",">=-?",">:^?",">=^?",">:o?",">=o?") iconstate = "angry/weird" sad_weird smileys = list("<:S","<=S","<=oS","<:oS","<:-S","<=-S","<:^S","<=^S","<:oS","<=oS", "<=}","<={","<:}","<:{","<:@","<:?","<=?","<:-?","<=-?","<:^?","<=^?","<:o?","<=o?") iconstate = "sad/weird" sad_uncertain smileys = list("<:/","<:\\","<=/","<=\\","<:o\\","<:o/","<=^/","<=^\\","<:^/","<:^\\", "<=-/","<=-\\","<:-/","<:-\\") iconstate = "sad/uncertain" uncertain_skeptical2 smileys = list("/:/","/:\\","/=/","/=\\","/:o\\","/:o/","/=^/","/=^\\","/:^/","/:^\\", "/=-/","/=-\\","/:-/","/:-\\","\\:/","\\:\\","\\=/","\\=\\","\\:o\\","\\:o/", "\\=^/","\\=^\\","\\:^/","\\:^\\","\\=-/","\\=-\\","\\:-/","\\:-\\") iconstate = "uncertain/skeptical2" skeptical2 smileys = list("/=|","/:|","/:-|","/=-|","/=^|","/:^|","/=o|","/:o|","/=l", "/:l","/:-l","/=-l","/=^l","/:^l","/=I","/:I","/:-I","/=-I","/=^I","/:^I", "/=oI","/:oI","\\=|","\\:|","\\:-|","\\=-|","\\=^|","\\:^|","\\=o|","\\:o|", "\\=l","\\:l","\\:-l","\\=-l","\\=^l","\\:^l","\\=I","\\:I","\\:-I","\\=-I", "\\=^I","\\:^I","\\=oI","\\:oI") iconstate = "skeptical2" sad_skeptical2 smileys = list("/=(","/:(","/:-(","/=-(","/=^(","/:^(","/=\[","/:\[","/:-\[", "/=-\[","/=^\[","/:^\[","/:<","/:-<","/=-<","/=^<","/:^<","/:o\[","/:o(", "/=o\[","/=o(","\\=(","\\:(","\\:-(","\\=-(","\\=^(","\\:^(","\\=\[","\\:\[", "\\:-\[","\\=-\[","\\=^\[","\\:^\[","\\:<","\\:-<","\\=-<","\\=^<","\\:^<", "\\:o\[","\\:o(","\\=o\[","\\=o(") iconstate = "sad/skeptical2" happy_skeptical2 smileys = list("/=)","/:)","/:-)","/=-)","/=^)","/:^)","/=)","/:]","/:-]", "/=-]","/=^]","/:^]","/:>","/:->","/=->","/=^>","/:^>","/:o]","/:o)", "/=o]","/=o)","\\=)","\\:)","\\:-)","\\=-)","\\=^)","\\:^)","\\=]","\\:]", "\\:-]","\\=-]","\\=^]","\\:^]","\\:>","\\:->","\\=->","\\=^>","\\:^>", "\\:o]","\\:o)","\\=o]","\\=o)") iconstate = "happy/skeptical2" wink_grin smileys = list(";D",";-D",";^D") iconstate = "wink/grin" tongue2 smileys = list("=p",":p",":-p","=-p","=^p",":^p","=þ",":þ",":-þ","=-þ","=^þ",":^þ", "=oþ",":oþ","=op",":op") iconstate = "tongue2" tongue smileys = list("=P",":P",":-P","=-P","=^P",":^P","=oP",":oP") iconstate = "tongue" grin smileys = list("=D",":D",":-D","=-D","=^D",":^D") iconstate = "grin" wink smileys = list(";)",";-)",";^)",";\]",";-\]",";^\]",";>",";->",";^>", "^_-","-_^","^.-","-.^","O_-","-_O","O.-","-.O","o_-","-_o","o.-","-.o", "0_-","-_0","0.-","-.0") iconstate = "wink" sad_wink_a smileys = list(";(",";-(",";^(",";\[",";-\[",";^\[",";<",";-<",";^<") iconstate = "sad wink_a" wink_tongue2 smileys = list(";p",";-p",";^p",";þ",";-þ",";^þ",";oþ",";op") iconstate = "wink/tongue2" wink_tongue smileys = list(";P",";-P",";^P",";oP") iconstate = "wink/tongue" smile smileys = list("=)",":)",":-)","=-)","=^)",":^)","=\]",":\]",":-\]","=-\]", "=^\]",":^\]","=\]",":>",":->","=->","=^>",":^>","=o>",":o>","=o)","=o\]", ":o)",":o\]") iconstate = "smile" neutral smileys = list("=|",":|",":-|","=-|","=^|",":^|","o_o","o.o","=o|",":o|", "=l",":l",":-l","=-l","=^l",":^l","=I",":I",":-I","=-I","=^I",":^I","=oI",":oI") iconstate = "neutral" sad_a smileys = list("=(",":(",":-(","=-(","=^(",":^(","=\[",":\[",":-\[","=-\[", "=^\[",":^\[",":<",":-<","=-<","=^<",":^<",":o<",":o(",":o\[","=o<","=o(","=o\[") iconstate = "sad_a" thoughtful_wink smileys = list(";|",";-|",";^|",";o|",";l",";-l",";^l",";ol",";I",";-I",";^I",";oI") iconstate = "thoughtful wink" weird smileys = list(":S","=S","=oS",":oS",":-S","=-S",":^S","=^S",":oS","=oS","=}", "={",":}",":{",":@","@.@",":?","=?",":-?","=-?",":^?","=^?",":o?","=o?") iconstate = "weird" surprised_a smileys = list("=o",":o",":-o","=-o","=^o",":^o","=O",":O",":-O","=-O","=^O", ":^O","o.O","O.o","O_o","o_O","=oo",":oo","=oO",":oO",":0",":-0","=0","=-0", ":^0","=^0",":o0","=o0") iconstate = "surprised_a" anime_smile smileys = list("^_^") iconstate = "anime smile" anime_O smileys = list("^.^") iconstate = "anime O" anime_sleepy smileys = list("-_-","-.-") iconstate = "anime sleepy" uncertain smileys = list(":/",":\\","=/","=\\",":o\\",":o/","=^/","=^\\",":^/",":^\\", "=-/","=-\\",":-/",":-\\") iconstate = "uncertain" XD smileys = list("XD","xD","Xd") iconstate = "XD" shades smileys = list("8-)") iconstate = "Shades 8-)" Zipped smileys = list(":X") iconstate = "Zipped shut :X" Sumo smileys = list("-_-") iconstate = "Sumo -_-" Crying smileys = list(":'(") iconstate = "Crying :'(" Angel smileys = list("0:)") iconstate = "Angel 0:)" BigEyes smileys = list("0.0") iconstate = "0.0"
proc/s_smileys(text as text) var/smiley/smiley for(smiley in s_smileys) var/B for(B in smiley.smileys) if(!findtext(text,B)) continue
var/image/O = new O.icon = 's_smileys.dmi' O.icon_state = smiley.iconstate text = replaceWord(text, B, "<IMG CLASS=\"icon\" SRC=\"\ref[O.icon]\" \ ICONSTATE=\"[smiley.iconstate]\">") del O return(text)
#include "alphabetics.dm"
proc/replaceword(string, search, replace) if(!findtext(string, search)) return string var/tmp/string_len = lentext(string) var/tmp/search_len = lentext(search) var/tmp/replace_len = lentext(replace)
var/tmp/last_char = 0 var/list/ignores = list("'","1","2","3","4","5","6","7","8","9",",",".")
for(var/pos = 1, pos <= string_len-search_len+1, pos++) var/char = copytext(string, pos, pos+1) if(isalphabetic(char) || ignores.Find(char) || findtext(search, char)) if(!last_char)
var/following_char = " " if(pos+search_len <= string_len) following_char = copytext(string, pos+search_len, pos+search_len+1)
if(!isalphabetic(following_char)) if(cmptext(copytext(string, pos, pos+search_len), search)) string = copytext(string, 1, pos) + replace + copytext(string, pos+search_len) string_len += replace_len - search_len
last_char = 1 else if(last_char) last_char = 0 return(string)
proc/replaceWord(String, Search, Replace) if(!findText(String, Search)) return String var/tmp/String_len = lentext(String) var/tmp/Search_len = lentext(Search) var/tmp/Replace_len = lentext(Replace)
var/tmp/last_Char = 0 var/list/Ignores = list("'","1","2","3","4","5","6","7","8","9",",",".")
for(var/Pos = 1, Pos <= String_len-Search_len+1, Pos++) var/Char = copytext(String, Pos, Pos+1) if(isalphabetic(Char) || Ignores.Find(Char) || findText(Search, Char)) if(!last_Char)
var/following_Char = " " if(Pos+Search_len <= String_len) following_Char = copytext(String, Pos+Search_len, Pos+Search_len+1)
if(!isalphabetic(following_Char)) if(cmpText(copytext(String, Pos, Pos+Search_len), Search)) String = copytext(String, 1, Pos) + Replace + copytext(String, Pos+Search_len) String_len += Replace_len - Search_len
last_Char = 1 else if(last_Char) last_Char = 0 return(String)
proc/replacetext(string, search, replace) if(!findtext(string, search)) return string var/string_len = lentext(string) var/search_len = lentext(search) var/replace_len = lentext(replace)
for(var/pos = 1, pos <= string_len, pos++) if(cmptext(copytext(string, pos, pos+search_len), search)) string = copytext(string, 1, pos) + replace + copytext(string, pos+search_len) string_len += replace_len - search_len return(string)
proc/replaceText(String, Search, Replace) if(!findText(String, Search)) return String var/String_len = lentext(String) var/Search_len = lentext(Search) var/Replace_len = lentext(Replace)
for(var/Pos = 1, Pos <= String_len, Pos++) if(cmpText(copytext(String, Pos, Pos+Search_len), Search)) String = copytext(String, 1, Pos) + Replace + copytext(String, Pos+Search_len) String_len += Replace_len - Search_len
|