diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm
index 2f9969cb3ac..8818d32326f 100644
--- a/code/modules/mob/language.dm
+++ b/code/modules/mob/language.dm
@@ -6,7 +6,7 @@
var/name = "an unknown language" // Fluff name of language if any.
var/desc = "A language." // Short description for 'Check Languages'.
var/speech_verb = "says" // 'says', 'hisses', 'farts'.
- var/colour = "say_quote" // CSS style to use for strings in this language.
+ var/colour = "body" // CSS style to use for strings in this language.
var/key = "x" // Character used to speak in language eg. :o for Unathi.
var/flags = 0 // Various language flags.
var/native // If set, non-native speakers will have trouble speaking.
@@ -62,6 +62,7 @@
/datum/language/human
name = "Sol Common"
desc = "A bastardized hybrid of informal English and elements of Mandarin Chinese; the common language of the Sol system."
+ colour = "rough"
key = "1"
flags = RESTRICTED
@@ -71,35 +72,30 @@
name = "Tradeband"
desc = "Maintained by the various trading cartels in major systems, this elegant, structured language is used for bartering and bargaining."
speech_verb = "enunciates"
+ colour = "say_quote"
key = "2"
/datum/language/gutter
name = "Gutter"
desc = "Much like Standard, this crude pidgin tongue descended from numerous languages and serves as Tradeband for criminal elements."
speech_verb = "growls"
+ colour = "rough"
key = "3"
// Language handling.
/mob/proc/add_language(var/language)
- for(var/datum/language/L in languages)
- if(L && L.name == language)
- return 0
-
var/datum/language/new_language = all_languages[language]
- if(!istype(new_language,/datum/language))
+ if(!istype(new_language) || new_language in languages)
return 0
- languages += new_language
+ languages.Add(new_language)
return 1
/mob/proc/remove_language(var/rem_language)
- for(var/datum/language/L in languages)
- if(L && L.name == rem_language)
- languages -= L
- return 1
+ languages.Remove(all_languages[rem_language])
return 0
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 7944615ba10..f7b2de629b1 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -61,11 +61,6 @@
if(!species)
set_species("Human")
- if(species.language)
- var/datum/language/L = all_languages[species.language]
- if(L)
- languages += L
-
var/datum/reagents/R = new/datum/reagents(1000)
reagents = R
R.my_atom = src
@@ -1354,6 +1349,9 @@ mob/living/carbon/human/yank_out_object()
if(species && (species.name && species.name == new_species))
return 1
+ if(species && species.language)
+ remove_language(species.language)
+
species = all_species[new_species]
see_in_dark = species.darksight
@@ -1367,6 +1365,9 @@ mob/living/carbon/human/yank_out_object()
mutations+=species.default_mutations
+ if(species.language)
+ add_language(species.language)
+
spawn(0)
update_icons()
@@ -1424,4 +1425,4 @@ mob/living/carbon/human/yank_out_object()
var/obj/effect/decal/cleanable/blood/writing/W = new(T)
W.message = message
- W.add_fingerprint(src)
+ W.add_fingerprint(src)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 0dc6be11b08..5412389f09b 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -109,7 +109,7 @@ var/list/department_radio_keys = list(
if(client.prefs.muted & MUTE_IC)
src << "\red You cannot speak in IC (muted)."
return
- if (src.client.handle_spam_prevention(message,MUTE_IC))
+ if (src.client.handle_spam_prevention(message, MUTE_IC))
return
// undo last word status.
@@ -180,7 +180,7 @@ var/list/department_radio_keys = list(
if(src.stunned > 2 || (traumatic_shock > 61 && prob(50)))
message_mode = null //Stunned people shouldn't be able to physically turn on their radio/hold down the button to speak into it
- message = capitalize(message)
+ message = capitalize(trim_left(message))
if (!message)
return
diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm
index 806361514dc..1a84411fe0d 100644
--- a/code/modules/mob/new_player/new_player.dm
+++ b/code/modules/mob/new_player/new_player.dm
@@ -303,6 +303,9 @@
src << alert("[rank] is not available. Please try another.")
return 0
+ spawning = 1
+ close_spawn_windows()
+
job_master.AssignRole(src, rank, 1)
var/mob/living/carbon/human/character = create_character() //creates the human and transfers vars and mind
@@ -374,6 +377,7 @@
if(client.prefs.species)
chosen_species = all_species[client.prefs.species]
if(chosen_species)
+
if(is_alien_whitelisted(src, client.prefs.species) || !config.usealienwhitelist || !(chosen_species.flags & IS_WHITELISTED) || (client.holder.rights & R_ADMIN) )// Have to recheck admin due to no usr at roundstart. Latejoins are fine though.
switch(chosen_species.name)
if("Slime People")
@@ -395,13 +399,10 @@
if("Human")
new_character = new /mob/living/carbon/human/human(loc)
// new_character.set_species(client.prefs.species)
- if(chosen_species.language)
- new_character.add_language(chosen_species.language)
else
new_character = new /mob/living/carbon/human(loc)
new_character.lastarea = get_area(loc)
-
var/datum/language/chosen_language
if(client.prefs.language)
chosen_language = all_languages["[client.prefs.language]"]
diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm
index 4ee9e80e26f..83da7343cb5 100644
--- a/code/modules/mob/say.dm
+++ b/code/modules/mob/say.dm
@@ -105,30 +105,28 @@
//tcomms code is still runtiming somewhere here
var/ending = copytext(text, length(text))
- var/speechverb = ""
+ var/speech_verb = "says"
+ var/speech_style = "body"
if (speaking)
- speechverb = "[speaking.speech_verb], \""
+ speech_verb = speaking.speech_verb
+ speech_style = speaking.colour
else if(speak_emote && speak_emote.len)
- speechverb = "[pick(speak_emote)], \""
+ speech_verb = pick(speak_emote)
else if (src.stuttering)
- speechverb = "stammers, \""
+ speech_verb = "stammers"
else if (src.slurring)
- speechverb = "slurrs, \""
+ speech_verb = "slurrs"
else if (ending == "?")
- speechverb = "asks, \""
+ speech_verb = "asks"
else if (ending == "!")
- speechverb = "exclaims, \""
+ speech_verb = "exclaims"
else if(isliving(src))
var/mob/living/L = src
if (L.getBrainLoss() >= 60)
- speechverb = "gibbers, \""
- else
- speechverb = "says, \""
- else
- speechverb = "says, \""
+ speech_verb = "gibbers"
- return "[speechverb][text]\""
+ return "[speech_verb], \"[text]\""
/mob/proc/emote(var/act, var/type, var/message)
if(act == "me")
diff --git a/code/stylesheet.dm b/code/stylesheet.dm
index fda3fb64e25..b7846429a66 100644
--- a/code/stylesheet.dm
+++ b/code/stylesheet.dm
@@ -63,6 +63,7 @@ h1.alert, h2.alert {color: #000000;}
.skrell {color: #00CED1;}
.soghun {color: #228B22;}
.vox {color: #AA00AA;}
+.rough {font-family: "Trebuchet MS", cursive, sans-serif;}
.say_quote {font-family: Georgia, Verdana, sans-serif;}
.interface {color: #330033;}