diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index fc6bbfc4067..10a6a98b4a5 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -206,7 +206,7 @@
if(issilicon(traitor.current))
add_law_zero(traitor.current)
traitor.current.playsound_local('sound/ambience/antag/Malf.ogg',100,0)
- traitor.current.grant_language(/datum/language/common/codespeak)
+ traitor.current.grant_language(/datum/language/codespeak)
else
equip_traitor(traitor.current)
traitor.current.playsound_local('sound/ambience/antag/TatorAlert.ogg',100,0)
diff --git a/code/modules/language/codespeak.dm b/code/modules/language/codespeak.dm
index 33b81ea90d0..535e2b46e69 100644
--- a/code/modules/language/codespeak.dm
+++ b/code/modules/language/codespeak.dm
@@ -1,4 +1,4 @@
-/datum/language/common/codespeak
+/datum/language/codespeak
name = "Codespeak"
desc = "Syndicate operatives can use a series of codewords to convey complex information, while sounding like random concepts and drinks to anyone listening in."
key = "t"
@@ -6,7 +6,7 @@
flags = TONGUELESS_SPEECH | LANGUAGE_HIDE_ICON_IF_NOT_UNDERSTOOD
icon_state = "codespeak"
-/datum/language/common/codespeak/scramble(input)
+/datum/language/codespeak/scramble(input)
var/lookup = check_cache(input)
if(lookup)
return lookup
@@ -19,6 +19,10 @@
. = capitalize(.)
+ var/input_ending = copytext(input, length(input))
+ if(input_ending in list("!","?","."))
+ . += input_ending
+
add_to_cache(input, .)
/obj/item/weapon/codespeak_manual
@@ -32,12 +36,12 @@
if(!isliving(user))
return
- if(user.has_language(/datum/language/common/codespeak))
+ if(user.has_language(/datum/language/codespeak))
to_chat(user, "You start skimming through [src], but you already know Codespeak.")
return
to_chat(user, "You start skimming through [src], and suddenly your mind is filled with codewords and responses.")
- user.grant_language(/datum/language/common/codespeak)
+ user.grant_language(/datum/language/codespeak)
use_charge(user)
@@ -52,11 +56,11 @@
if(M.stat == DEAD)
M.visible_message("[user] smacks [M]'s lifeless corpse with [src].", "[user] smacks your lifeless corpse with [src].", "You hear smacking.")
- else if(M.has_language(/datum/language/common/codespeak))
+ else if(M.has_language(/datum/language/codespeak))
M.visible_message("[user] beats [M] over the head with [src]!", "[user] beats you over the head with [src]!", "You hear smacking.")
else
M.visible_message("[user] teaches [M] by beating them over the head with [src]!", "As [user] hits you with [src], codewords and responses flow through your mind.", "You hear smacking.")
- M.grant_language(/datum/language/common/codespeak)
+ M.grant_language(/datum/language/codespeak)
use_charge(user)
/obj/item/weapon/codespeak_manual/proc/use_charge(mob/user)
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 2636e2e5d55..f2764ca386a 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -14,6 +14,7 @@
languages_possible = typecacheof(list(
/datum/language/common,
/datum/language/draconic,
+ /datum/language/codespeak,
/datum/language/monkey,
/datum/language/narsie,
/datum/language/ratvar