Skip to content

Commit 5937aa9

Browse files
SorenonAbsolucy
andauthored
Negative Language Quirks (#5591)
## About The Pull Request ### Additions - Adjusts the cost of the Foreigner quirk from -2 to -6 and Bilingual from 4 to 2 - Adds the Outsider quirk - removes the player's species language - for humans this removes galactic common and replaces it with a random roundstart language - Adds the Listener quirk - removes the player's ability to speak common - Attempting to speak without knowing any languages will make you mimic galactic common ## Why It's Good For The Game - Provides more opportunities for player's to mess with their characters' languages while still being able to interact with most of the crew ## Changelog :cl: balance: Adjusted the amount of quirk points needed / given by the Foreigner and Bilingual quirk add: Added the Outsider quirk which remove's the player's species' language add: Added the Listener quirk which removes the player's ability to speak common /:cl: --------- Co-authored-by: Lucy <[email protected]>
1 parent 975c969 commit 5937aa9

File tree

8 files changed

+81
-5
lines changed

8 files changed

+81
-5
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
This desolate file is the start of an attempt to rebalance quirk costs to be more consistent.
3+
n.b. decreasing the cost of negative quirks could cause several players to have one or more of their positive quirks automatically removed.
4+
*/
5+
6+
#define QUIRK_COST_FOREIGNER -6
7+
8+
#define QUIRK_COST_LISTENER -3
9+
#define QUIRK_HARDCORE_LISTENER 3
10+
11+
#define QUIRK_COST_OUTSIDER -QUIRK_COST_BILINGUAL // Effectively allows players to choose their character's alt language
12+
13+
#define QUIRK_COST_BILINGUAL 2

code/controllers/subsystem/processing/quirks.dm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
3434
list("Mute", "Soft-Spoken"),
3535
list("Stormtrooper Aim", "Big Hands"),
3636
//list("Bilingual", "Foreigner"), //monkestation edit, commented out
37+
list("Listener", "Uncommon"), // monkestation addition
38+
list("Outsider", "Uncommon"), // monkestation addition
39+
list("Listener", "Mute"), // monkestation addition
40+
list("Listener", "Deaf"), // monkestation addition
3741
//might be fun to change this in the future. you can be a body purist but be forced to use implants regardless for medical reasons
3842
list("Body Purist", "Hosed"),
3943
list("Body Purist", "Neuralinked"),

code/datums/quirks/neutral_quirks/foreigner.dm

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
/datum/quirk/foreigner
22
name = "Foreigner"
3-
desc = "You're not from around here. You don't know Galactic Common!"
3+
// monkestation edit original: desc = "You're not from around here. You don't know Galactic Common!"
4+
desc = "You don't understand Galactic Common. If you are human you have learned Galactic Uncommon instead."
45
icon = FA_ICON_LANGUAGE
5-
value = -2 //Monkestation change 0->-2
6+
value = QUIRK_COST_FOREIGNER //Monkestation change 0->QUIRK_COST_FOREIGNER
67
gain_text = span_notice("The words being spoken around you don't make any sense.")
78
lose_text = span_notice("You've developed fluency in Galactic Common.")
8-
medical_record_text = "Patient does not speak Galactic Common and may require an interpreter."
9+
// monkestation edit original: medical_record_text = "Patient does not speak Galactic Common and may require an interpreter."
10+
medical_record_text = "Patient does not understand Galactic Common and may require an interpreter."
911
mail_goodies = list(/obj/item/taperecorder) // for translation
1012

13+
// monkestation edit start
14+
/* original
1115
/datum/quirk/foreigner/add(client/client_source)
1216
var/mob/living/carbon/human/human_holder = quirk_holder
1317
human_holder.add_blocked_language(/datum/language/common)
@@ -19,3 +23,11 @@
1923
human_holder.remove_blocked_language(/datum/language/common)
2024
if(ishumanbasic(human_holder))
2125
human_holder.remove_language(/datum/language/uncommon)
26+
*/
27+
/datum/quirk/foreigner/add_unique(client/client_source)
28+
. = ..()
29+
var/mob/living/carbon/human/human_holder = quirk_holder
30+
quirk_holder.remove_language(/datum/language/common, TRUE, TRUE, LANGUAGE_ALL)
31+
if(ishumanbasic(human_holder))
32+
human_holder.grant_language(/datum/language/uncommon, understood = TRUE, spoken = TRUE, source = LANGUAGE_QUIRK)
33+
// monkestation edit end

code/datums/quirks/positive_quirks/bilingual.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "Bilingual"
33
desc = "Over the years you've picked up an extra language!"
44
icon = FA_ICON_GLOBE
5-
value = 4
5+
value = QUIRK_COST_BILINGUAL // monkestation edit 4 -> QUIRK_COST_BILINGUAL
66
gain_text = span_notice("Some of the words of the people around you certainly aren't common. Good thing you studied for this.")
77
lose_text = span_notice("You seem to have forgotten your second language.")
88
medical_record_text = "Patient speaks multiple languages."

code/game/say.dm

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,13 @@ GLOBAL_LIST_INIT(freqtospan, list(
180180
/// Modifies the message by comparing the languages of the speaker with the languages of the hearer. Called on the hearer.
181181
/atom/movable/proc/translate_language(atom/movable/speaker, datum/language/language, raw_message, list/spans, list/message_mods = list())
182182
if(!language)
183+
// monkestation edit start
184+
/* original
183185
return "makes a strange sound."
186+
*/
187+
var/datum/language/dialect = GLOB.language_datum_instances[/datum/language/common]
188+
return dialect.scramble(raw_message)
189+
// monkestation edit end
184190

185191
if(!has_language(language))
186192
var/datum/language/dialect = GLOB.language_datum_instances[language]
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/datum/quirk/outsider
2+
name = "Outsider"
3+
desc = "You don't know your species' language. If you are human you know a random language instead of Galactic Common."
4+
icon = FA_ICON_BAN
5+
value = QUIRK_COST_OUTSIDER
6+
gain_text = span_notice("You can't understand your species' language.")
7+
lose_text = span_notice("You've remembered your species' language.")
8+
9+
/datum/quirk/outsider/add_unique(client/client_source)
10+
var/is_human = ishumanbasic(quirk_holder)
11+
if (is_human)
12+
quirk_holder.remove_language(/datum/language/common, TRUE, TRUE, LANGUAGE_ALL)
13+
for (var/language in quirk_holder.language_holder.understood_languages)
14+
if (language != /datum/language/common)
15+
quirk_holder.remove_language(language, TRUE, FALSE, LANGUAGE_ALL)
16+
for (var/language in quirk_holder.language_holder.spoken_languages)
17+
if (language != /datum/language/common)
18+
quirk_holder.remove_language(language, FALSE, TRUE, LANGUAGE_ALL)
19+
if (is_human)
20+
quirk_holder.grant_language(pick(GLOB.roundstart_languages), TRUE, TRUE, LANGUAGE_QUIRK)
21+
22+
/datum/quirk/listener
23+
name = "Listener"
24+
desc = "You are unable to speak Galactic Common though you understand it just fine."
25+
icon = FA_ICON_BELL_SLASH
26+
value = QUIRK_COST_LISTENER
27+
hardcore_value = QUIRK_HARDCORE_LISTENER
28+
gain_text = span_notice("You don't know how to speak Galactic Common.")
29+
lose_text = span_notice("You're able to speak Galactic Common.")
30+
medical_record_text = "Patient does not speak Galactic Common and may require an interpreter."
31+
32+
/datum/quirk/listener/add_unique(client/client_source)
33+
quirk_holder.remove_language(/datum/language/common, FALSE, TRUE, LANGUAGE_ATOM)
34+
if (!iscarbon(quirk_holder))
35+
return
36+
var/mob/living/carbon/carbon_holder = quirk_holder
37+
for (var/obj/item/clothing/mask/translator/translator in carbon_holder.get_all_gear())
38+
carbon_holder.temporarilyRemoveItemFromInventory(translator, force = TRUE, idrop = FALSE)
39+
qdel(translator)

tgstation.dme

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,7 @@
459459
#include "code\__DEFINES\~monkestation\physics.dm"
460460
#include "code\__DEFINES\~monkestation\power.dm"
461461
#include "code\__DEFINES\~monkestation\projectiles.dm"
462+
#include "code\__DEFINES\~monkestation\quirk_costs.dm"
462463
#include "code\__DEFINES\~monkestation\robots.dm"
463464
#include "code\__DEFINES\~monkestation\skills.dm"
464465
#include "code\__DEFINES\~monkestation\slimes.dm"
@@ -6040,6 +6041,7 @@
60406041
#include "monkestation\code\datums\quirks\negative_quirks\insanity.dm"
60416042
#include "monkestation\code\datums\quirks\negative_quirks\kakologophobia.dm"
60426043
#include "monkestation\code\datums\quirks\negative_quirks\kleptomaniac.dm"
6044+
#include "monkestation\code\datums\quirks\negative_quirks\language_quirks.dm"
60436045
#include "monkestation\code\datums\quirks\negative_quirks\light_drinker.dm"
60446046
#include "monkestation\code\datums\quirks\negative_quirks\monophobia.dm"
60456047
#include "monkestation\code\datums\quirks\negative_quirks\prosthetic_limb.dm"
@@ -6156,7 +6158,7 @@
61566158
#include "monkestation\code\game\objects\items\stickers.dm"
61576159
#include "monkestation\code\game\objects\items\superglue.dm"
61586160
#include "monkestation\code\game\objects\items\tactical_shields.dm"
6159-
#include "monkestation\code\game\objects\items\translation_hat.dm"
6161+
#include "monkestation\code\game\objects\items\translator.dm"
61606162
#include "monkestation\code\game\objects\items\trash.dm"
61616163
#include "monkestation\code\game\objects\items\turf_demolisher.dm"
61626164
#include "monkestation\code\game\objects\items\venom_knife.dm"

0 commit comments

Comments
 (0)