Skip to content

Commit

Permalink
Basic Language Menu (#936)
Browse files Browse the repository at this point in the history
# Description

This is a very _early_ take on a Language menu, making use of the new
CharacterItemGroups functionality, as well as functionality added to the
trait system that allows it to add and remove languages directly. This
PR adds in the languages Tau-Cetic Basic(taking the place of Galactic
Common), Tradeband, Freespeak, Elyran Standard, and Sol Common(I'm
replacing the extremely basic bastardized Sol Common we had before with
the fully realized version of it from Bay12).

<details><summary><h1>Media</h1></summary>
<p>


![image](https://github.com/user-attachments/assets/68d054b6-975b-42db-b039-d517e337ace3)

</p>
</details>

# Changelog

:cl:
- add: A basic Languages menu has been added into the Traits tab. 
- add: Tau-Ceti Basic, Tradeband, Freespeak, Elyran Standard, Sol
Common, and Sign Language have been added to the Languages tab.
  • Loading branch information
VMSolidus authored Sep 20, 2024
1 parent 328d71a commit def63b6
Show file tree
Hide file tree
Showing 58 changed files with 1,987 additions and 756 deletions.
2 changes: 1 addition & 1 deletion Content.Server/Traits/Assorted/ForeignerTraitComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public sealed partial class ForeignerTraitComponent : Component
{
/// <summary>
/// The "base" language that is to be removed and substituted with a translator.
/// By default, equals to the fallback language, which is GalacticCommon.
/// By default, equals to the fallback language, which is TauCetiBasic.
/// </summary>
[DataField]
public ProtoId<LanguagePrototype> BaseLanguage = SharedLanguageSystem.FallbackLanguagePrototype;
Expand Down
2 changes: 1 addition & 1 deletion Content.Shared/Language/Systems/SharedLanguageSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public abstract class SharedLanguageSystem : EntitySystem
/// The language used as a fallback in cases where an entity suddenly becomes a language speaker (e.g. the usage of make-sentient)
/// </summary>
[ValidatePrototypeId<LanguagePrototype>]
public static readonly string FallbackLanguagePrototype = "GalacticCommon";
public static readonly string FallbackLanguagePrototype = "TauCetiBasic";

/// <summary>
/// The language whose speakers are assumed to understand and speak every language. Should never be added directly.
Expand Down
10 changes: 5 additions & 5 deletions Resources/Locale/en-US/language/commands.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ command-list-langs-desc = List languages your current entity can speak at the cu
command-list-langs-help = Usage: {$command}
command-saylang-desc = Send a message in a specific language. To choose a language, you can use either the name of the language, or its position in the list of languages.
command-saylang-help = Usage: {$command} <language id> <message>. Example: {$command} GalacticCommon "Hello World!". Example: {$command} 1 "Hello World!"
command-saylang-help = Usage: {$command} <language id> <message>. Example: {$command} TauCetiBasic "Hello World!". Example: {$command} 1 "Hello World!"
command-language-select-desc = Select the currently spoken language of your entity. You can use either the name of the language, or its position in the list of languages.
command-language-select-help = Usage: {$command} <language id>. Example: {$command} 1. Example: {$command} GalacticCommon
command-language-select-help = Usage: {$command} <language id>. Example: {$command} 1. Example: {$command} TauCetiBasic
command-language-spoken = Spoken:
command-language-understood = Understood:
Expand All @@ -18,14 +18,14 @@ command-language-invalid-language = The language {$id} does not exist or you can
# toolshed

command-description-language-add = Adds a new language to the piped entity. The two last arguments indicate whether it should be spoken/understood. Example: 'self language:add "Canilunzt" true true'
command-description-language-rm = Removes a language from the piped entity. Works similarly to language:add. Example: 'self language:rm "GalacticCommon" true true'.
command-description-language-rm = Removes a language from the piped entity. Works similarly to language:add. Example: 'self language:rm "TauCetiBasic" true true'.
command-description-language-lsspoken = Lists all languages the entity can speak. Example: 'self language:lsspoken'
command-description-language-lsunderstood = Lists all languages the entity can understand. Example: 'self language:lssunderstood'
command-description-translator-addlang = Adds a new target language to the piped translator entity. See language:add for details.
command-description-translator-rmlang = Removes a target language from the piped translator entity. See language:rm for details.
command-description-translator-addrequired = Adds a new required language to the piped translator entity. Example: 'ent 1234 translator:addrequired "GalacticCommon"'
command-description-translator-rmrequired = Removes a required language from the piped translator entity. Example: 'ent 1234 translator:rmrequired "GalacticCommon"'
command-description-translator-addrequired = Adds a new required language to the piped translator entity. Example: 'ent 1234 translator:addrequired "TauCetiBasic"'
command-description-translator-rmrequired = Removes a required language from the piped translator entity. Example: 'ent 1234 translator:rmrequired "TauCetiBasic"'
command-description-translator-lsspoken = Lists all spoken languages for the piped translator entity. Example: 'ent 1234 translator:lsspoken'
command-description-translator-lsunderstood = Lists all understood languages for the piped translator entity. Example: 'ent 1234 translator:lssunderstood'
command-description-translator-lsrequired = Lists all required languages for the piped translator entity. Example: 'ent 1234 translator:lsrequired'
Expand Down
38 changes: 31 additions & 7 deletions Resources/Locale/en-US/language/languages.ftl
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
language-Universal-name = Universal
language-Universal-description = What are you?
language-GalacticCommon-name = Galactic common
language-GalacticCommon-description = The standard Galatic language, most commonly used for inter-species communications and legal work.
language-Bubblish-name = Bubblish
language-Bubblish-description = The language of Slimes. Being a mixture of bubbling noises and pops it's very difficult to speak for humans without the use of mechanical aids.
Expand All @@ -17,19 +14,46 @@ language-Draconic-name = Draconic
language-Draconic-description = The common language of lizard-people, composed of sibilant hisses and rattles.
language-SolCommon-name = Sol common
language-SolCommon-description = The language common to species from the Sol System.
language-SolCommon-description =
With its roots in Mandarin Chinese - Common evolved as the official language of the Sol Alliance - with officials working to tie it together with a common tongue.
It's spoken by state officials - taught in schools - and spoken by those who either feel a sense of national pride in the Alliance or otherwise fell sway to the culture.
language-TauCetiBasic-name = Tau-Ceti Basic
language-TauCetiBasic-description =
A spiritual successor of Esperanto, established in 2404 in Tau Ceti by Ceti intellectuals.
Its unique, fully customized alphabet and structure allow it to be spoken even by most alien species.
It's the official language of Tau Ceti and has growing traction in diplomatic circles and Universalists across human space.
language-Tradeband-name = Tradeband
language-Tradeband-description =
Descended from latin and romance languages of old Earth - Tradeband remains the main tongue of the upper class of humanity.
The language sounds elegant and well structured to most ears. It remains in popular use with traders - diplomats - and those seeking to hold onto a piece of a romantic past.
language-Freespeak-name = Freespeak
language-Freespeak-description =
A language of renegades and frontiersmen descending from various languages from Earth-- like Hindi,
combined into a multi-rooted jumble that sounds incoherent or even barbarian to non-native speakers.
This language is the only common cultural identity for humans in the frontier. Speaking this language in itself boldly declares the speaker a free spirit.
It is often called 'Gutter' by Alliance citizens.
language-Elyran-name = Elyran Standard
language-Elyran-description =
Elyran Standard is the official tongue of the Republic of Elyra. Constructed using elements of Farsi - Arabic - and Turkish.
Influence from all three of these languages can be seen throughout its grammar and vocabulary.
language-Canilunzt-name = Canilunzt
language-Canilunzt-description = The guttural language spoken and utilized by the inhabitants of the Vazzend system, composed of growls, barks, yaps, and heavy utilization of ears and tail movements. Vulpkanin speak this language with ease.
language-Canilunzt-description =
The guttural language spoken and utilized by the inhabitants of the Vazzend system,
composed of growls, barks, yaps, and heavy utilization of ears and tail movements. Vulpkanin speak this language with ease.
language-Moffic-name = Moffic
language-Moffic-description = The language of the mothpeople borders on complete unintelligibility.
language-RobotTalk-name = RobotTalk
language-RobotTalk-description = A language consisting of harsh binary chirps, whistles, hisses, and whines. Organic tongues cannot speak it without aid from special translators.
language-Sign-name = Galactic Sign Language
language-Sign-description = GSL for short, this sign language is prevalent among mute and deaf people.
language-Sign-name = Tau-Ceti Basic Sign Language
language-Sign-description = TCB-SL for short, this sign language is prevalent among mute and deaf people.
language-Cat-name = Cat
language-Cat-description = Meow
Expand Down
4 changes: 4 additions & 0 deletions Resources/Locale/en-US/loadouts/itemgroups.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,7 @@ character-item-group-LoadoutBartenderWeapon = Bartender Weapon
# Service - Musician
character-item-group-LoadoutMusicianInstruments = Musician Instruments
# Traits - Languages
character-item-group-TraitsLanguagesBasic = Basic Languages
character-item-group-TraitsAccents = Accents
5 changes: 4 additions & 1 deletion Resources/Locale/en-US/traits/categories.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,7 @@ trait-category-Auditory = Auditory
trait-category-Mental = Mental
trait-category-Physical = Physical
trait-category-Speech = Speech
trait-category-Visual = Visual
trait-category-TraitsSpeechUncategorized = Uncategorized
trait-category-TraitsSpeechAccents = Accents
trait-category-TraitsSpeechLanguages = Languages
trait-category-Visual = Visual
23 changes: 22 additions & 1 deletion Resources/Locale/en-US/traits/traits.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -152,9 +152,30 @@ trait-description-Lethargy =
trait-name-SignLanguage = Sign Language
trait-description-SignLanguage =
You can understand and use Galactic Sign Language (GSL).
You can understand and use Tau-Ceti Basic Sign Language (TCB-SL).
If you are mute for any reason, you can still communicate with sign language.
trait-name-SolCommon = Sol Common
trait-description-SolCommon =
With its roots in Mandarin Chinese - Common evolved as the official language of the Sol Alliance - with officials working to tie it together with a common tongue.
It's spoken by state officials - taught in schools - and spoken by those who either feel a sense of national pride in the Alliance or otherwise fell sway to the culture.
trait-name-Tradeband = Tradeband
trait-description-Tradeband =
Descended from latin and romance languages of old Earth - Tradeband remains the main tongue of the upper class of humanity.
The language sounds elegant and well structured to most ears. It remains in popular use with traders - diplomats - and those seeking to hold onto a piece of a romantic past.
trait-name-Freespeak = Freespeak (Gutter)
trait-description-Freespeak =
A language of renegades and frontiersmen descending from various languages from Earth like Hindi combined into a multi-rooted jumble that sounds incoherent or even barbarian to non-native speakers.
This language is the only common cultural identity for humans in the frontier. Speaking this language in itself boldly declares the speaker a free spirit.
Often called 'Gutter' by Alliance citizens.
trait-name-Elyran = Elyran Standard
trait-description-Elyran =
Elyran Standard is the official tongue of the Republic of Elyra.
Constructed using elements of Farsi - Arabic - and Turkish - influence from all three of these languages can be seen throughout its grammar and vocabulary.
trait-name-Voracious = Voracious
trait-description-Voracious =
Nothing gets between you and your food.
Expand Down
31 changes: 31 additions & 0 deletions Resources/Prototypes/CharacterItemGroups/languageGroups.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
- type: characterItemGroup
id: TraitsLanguagesBasic
maxItems: 1
items:
- type: trait
id: SignLanguage
- type: trait
id: SolCommon
- type: trait
id: Tradeband
- type: trait
id: Freespeak
- type: trait
id: Elyran

- type: characterItemGroup
id: TraitsAccents
maxItems: 1
items:
- type: trait
id: FrontalLisp
- type: trait
id: Stutter
- type: trait
id: PirateAccent
- type: trait
id: Accentless
- type: trait
id: Southern
- type: trait
id: ScottishAccent
2 changes: 1 addition & 1 deletion Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/animals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -184,4 +184,4 @@
- Dog
understands:
- Dog
- GalacticCommon
- TauCetiBasic
4 changes: 2 additions & 2 deletions Resources/Prototypes/DeltaV/Entities/Mobs/NPCs/familiars.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@
- NanoTrasen
- type: LanguageKnowledge
speaks:
- GalacticCommon
- TauCetiBasic
understands:
- GalacticCommon
- TauCetiBasic
- type: GhostTakeoverAvailable
- type: GhostRole
makeSentient: true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@
- Mouse
understands:
- Mouse
- GalacticCommon
- TauCetiBasic
- type: Tag
tags:
- VimPilot
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,10 @@
- type: Wagging
- type: LanguageKnowledge
speaks:
- GalacticCommon
- TauCetiBasic
- Canilunzt
understands:
- GalacticCommon
- TauCetiBasic
- Canilunzt
- type: ConsumeDelayModifier
foodDelayMultiplier: 0.5
Expand Down
5 changes: 4 additions & 1 deletion Resources/Prototypes/DeltaV/Traits/neutral.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
- type: trait
id: ScottishAccent
category: Speech
category: TraitsSpeechAccents
points: 0
requirements:
- !type:CharacterItemGroupRequirement
group: TraitsAccents
components:
- type: ScottishAccent
Original file line number Diff line number Diff line change
Expand Up @@ -218,10 +218,10 @@
- Normal
- type: LanguageKnowledge
speaks:
- GalacticCommon
- TauCetiBasic
- RobotTalk
understands:
- GalacticCommon
- TauCetiBasic
- RobotTalk
- type: PsionicInsulation

Expand Down
10 changes: 5 additions & 5 deletions Resources/Prototypes/Entities/Mobs/NPCs/animals.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1370,7 +1370,7 @@
understands:
- Monkey
- Kobold
- GalacticCommon
- TauCetiBasic
- type: NpcFactionMember
factions:
- Syndicate
Expand Down Expand Up @@ -2002,9 +2002,9 @@
bloodMaxVolume: 50
- type: LanguageKnowledge
speaks:
- GalacticCommon
- TauCetiBasic
understands:
- GalacticCommon
- TauCetiBasic

- type: entity
name: penguin
Expand Down Expand Up @@ -2903,7 +2903,7 @@
- Cat
understands:
- Cat
- GalacticCommon
- TauCetiBasic

- type: entity
name: space cat
Expand Down Expand Up @@ -3450,7 +3450,7 @@
speaks:
- RootSpeak
understands:
- GalacticCommon
- TauCetiBasic
- RootSpeak

- type: entity
Expand Down
2 changes: 1 addition & 1 deletion Resources/Prototypes/Entities/Mobs/NPCs/dogs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@
- Dog
understands:
- Dog
- GalacticCommon
- TauCetiBasic

- type: entity
parent: MobPibble
Expand Down
20 changes: 10 additions & 10 deletions Resources/Prototypes/Entities/Mobs/NPCs/pets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
speaks:
- Dog
understands:
- GalacticCommon
- TauCetiBasic
- Dog

- type: entity
Expand Down Expand Up @@ -131,7 +131,7 @@
speaks:
- Cat
understands:
- GalacticCommon
- TauCetiBasic
- Cat

- type: entity
Expand All @@ -155,7 +155,7 @@
speaks:
- Cat
understands:
- GalacticCommon
- TauCetiBasic
- Cat

- type: entity
Expand Down Expand Up @@ -310,7 +310,7 @@
speaks:
- Dog
understands:
- GalacticCommon
- TauCetiBasic
- Dog
- type: InteractionPopup
successChance: 0.5
Expand Down Expand Up @@ -415,7 +415,7 @@
speaks:
- Dog
understands:
- GalacticCommon
- TauCetiBasic
- Dog
- type: InteractionPopup
successChance: 0.7
Expand Down Expand Up @@ -580,7 +580,7 @@
speaks:
- Fox
understands:
- GalacticCommon
- TauCetiBasic
- Fox

- type: entity
Expand Down Expand Up @@ -633,7 +633,7 @@
speaks:
- Mouse
understands:
- GalacticCommon
- TauCetiBasic
- Mouse

- type: entity
Expand Down Expand Up @@ -811,7 +811,7 @@
speaks:
- Bubblish
understands:
- GalacticCommon
- TauCetiBasic
- Bubblish

- type: entity
Expand Down Expand Up @@ -851,7 +851,7 @@
speaks:
- Monkey
understands:
- GalacticCommon
- TauCetiBasic
- Monkey
- Kobold

Expand Down Expand Up @@ -885,5 +885,5 @@
speaks:
- Crab
understands:
- GalacticCommon
- TauCetiBasic
- Crab
Loading

0 comments on commit def63b6

Please sign in to comment.