diff --git a/code/__DEFINES/language.dm b/code/__DEFINES/language.dm index d5fa67406a53..71da814b8b50 100644 --- a/code/__DEFINES/language.dm +++ b/code/__DEFINES/language.dm @@ -21,3 +21,4 @@ #define LANGUAGE_SOFTWARE "software" #define LANGUAGE_STONER "stoner" #define LANGUAGE_VOICECHANGE "voicechange" +#define LANGUAGE_CATEARS "cat" diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 7b23392e720a..9171147cd6ed 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -134,6 +134,17 @@ if(ishuman(user) && slot == SLOT_HEAD) update_icon(user) user.update_inv_head() //Color might have been changed by update_icon. + var/datum/language_holder/LH = user.get_language_holder() + if(!LH.has_language(/datum/language/felinid) || !LH.can_speak_language(/datum/language/felinid)) + to_chat(user, "Your mind floods with thoughts of hairballs.") + LH.grant_language(/datum/language/felinid,TRUE,TRUE,LANGUAGE_CATEARS) + ..() + +/obj/item/clothing/head/kitty/dropped(mob/user) + var/datum/language_holder/LH = user.get_language_holder() + if(LH.has_language(/datum/language/felinid) || LH.can_speak_language(/datum/language/felinid)) //sanity + to_chat(user, "You rid yourself of degeneracy.") + LH.remove_language(/datum/language/felinid,TRUE,TRUE,LANGUAGE_CATEARS) ..() /obj/item/clothing/head/kitty/update_icon(mob/living/carbon/human/user) diff --git a/code/modules/language/felinid.dm b/code/modules/language/felinid.dm new file mode 100644 index 000000000000..913eb3e248f9 --- /dev/null +++ b/code/modules/language/felinid.dm @@ -0,0 +1,13 @@ +/datum/language/felinid + name = "Felinid" + desc = "A language devised by felinids to secretly plot against regular humans" + exclaim_verb = "nyas" + key = "f" + flags = TONGUELESS_SPEECH + space_chance = 90 + syllables = list( + "meow", "nya", "nyam","mm","mrow","mmrrrr" + ) + icon_state = "felinid" + default_priority = 90 + sing_verb = "purrs" diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 059e07f3ddde..852b665c397f 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -361,6 +361,12 @@ Key procs spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), /datum/language/ratvar = list(LANGUAGE_ATOM),) +/datum/language_holder/felinid + understood_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/felinid = list(LANGUAGE_ATOM)) + spoken_languages = list(/datum/language/common = list(LANGUAGE_ATOM), + /datum/language/felinid = list(LANGUAGE_ATOM)) + /datum/language_holder/empty understood_languages = list() spoken_languages = list() diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index f485cdf762b8..f68d71359302 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -10,6 +10,7 @@ mutantears = /obj/item/organ/ears/cat mutanttail = /obj/item/organ/tail/cat changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN | SLIME_EXTRACT + species_language_holder = /datum/language_holder/felinid /datum/species/human/felinid/qualifies_for_rank(rank, list/features) return TRUE diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 7d2755f33442..35523bbe9e98 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -26,7 +26,8 @@ /datum/language/japanese, /datum/language/machine, //yogs /datum/language/darkspawn, //also yogs - /datum/language/encrypted + /datum/language/encrypted, + /datum/language/felinid )) /obj/item/organ/tongue/Initialize(mapload) diff --git a/icons/misc/language.dmi b/icons/misc/language.dmi index b05b6cab7c2d..449150d4a1fd 100644 Binary files a/icons/misc/language.dmi and b/icons/misc/language.dmi differ diff --git a/yogstation.dme b/yogstation.dme index b002e518256d..bdf9b8b4d95a 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -2072,6 +2072,7 @@ #include "code\modules\language\egg.dm" #include "code\modules\language\encrypted.dm" #include "code\modules\language\etherean.dm" +#include "code\modules\language\felinid.dm" #include "code\modules\language\language.dm" #include "code\modules\language\language_holder.dm" #include "code\modules\language\language_menu.dm" diff --git a/yogstation/code/modules/scripting/Implementations/Telecomms.dm b/yogstation/code/modules/scripting/Implementations/Telecomms.dm index 26ff7dbc6b0f..34780af33625 100644 --- a/yogstation/code/modules/scripting/Implementations/Telecomms.dm +++ b/yogstation/code/modules/scripting/Implementations/Telecomms.dm @@ -14,6 +14,7 @@ #define ETHEREAN 128 #define BONE 256 #define MOTH 512 +#define CAT 1024 GLOBAL_LIST_INIT(allowed_custom_spans,list(SPAN_ROBOT,SPAN_YELL,SPAN_ITALICS,SPAN_SANS,SPAN_COMMAND,SPAN_CLOWN))//Span classes that players are allowed to set in a radio transmission. //this is fucking broken @@ -170,6 +171,8 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag oldlang = BONE else if(oldlang == /datum/language/mothian) oldlang = MOTH + else if(oldlang == /datum/language/felinid) + oldlang = CAT // Signal data var/datum/n_struct/signal/script_signal = new(list( @@ -306,6 +309,8 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag return /datum/language/bonespeak if(MOTH) return /datum/language/mothian + if(CAT) + return /datum/language/felinid /datum/n_function/default/mem name = "mem" @@ -479,3 +484,4 @@ GLOBAL_LIST_INIT(allowed_translations,list(/datum/language/common,/datum/languag #undef ETHEREAN #undef BONE #undef MOTH +#undef CAT