Adds an accent system (#9196)

This commit is contained in:
Alberyk
2020-07-03 15:36:08 -03:00
committed by GitHub
parent 742f76e511
commit 7fbdeb2a02
35 changed files with 489 additions and 12 deletions
+6
View File
@@ -0,0 +1,6 @@
--
-- Adds support for accents as a character option in PR #9196.
--
ALTER TABLE `ss13_characters`
ADD COLUMN `accent` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci' AFTER `religion`;
+6
View File
@@ -1237,6 +1237,12 @@
#include "code\modules\awaymissions\trigger.dm"
#include "code\modules\awaymissions\zlevel.dm"
#include "code\modules\background\defines.dm"
#include "code\modules\background\accent\accent.dm"
#include "code\modules\background\accent\diona.dm"
#include "code\modules\background\accent\human.dm"
#include "code\modules\background\accent\skrell.dm"
#include "code\modules\background\accent\tajara.dm"
#include "code\modules\background\accent\unathi.dm"
#include "code\modules\background\citizenship\citizenship.dm"
#include "code\modules\background\citizenship\human.dm"
#include "code\modules\background\citizenship\ipc.dm"
+13 -1
View File
@@ -18,6 +18,7 @@
var/list/citizenships = list()
var/list/religions = list()
var/list/accents = list()
/datum/controller/subsystem/records/Initialize()
..()
@@ -26,6 +27,7 @@
InitializeCitizenships()
InitializeReligions()
InitializeAccents()
/datum/controller/subsystem/records/New()
records = list()
@@ -284,7 +286,7 @@
/datum/controller/subsystem/records/proc/get_manifest_json()
if(manifest.len)
return manifest_json
get_manifest_list()
return manifest_json
@@ -337,6 +339,16 @@
if (!religions.len)
crash_with("No citizenships located in SSrecords.")
/datum/controller/subsystem/records/proc/InitializeAccents()
for (var/type in subtypesof(/datum/accent))
var/datum/accent/accent = new type()
accents[accent.name] = accent
if (!accents.len)
crash_with("No accents located in SSrecords.")
/datum/controller/subsystem/records/proc/get_religion_record_name(var/target_religion)
var/datum/religion/religion = SSrecords.religions[target_religion]
if(religion)
+7 -1
View File
@@ -231,6 +231,12 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
var/list/obj/item/device/radio/radios = list()
// --- Gets the accent icon, if there is any ---
var/accent_icon
if(ishuman(M) && speaking)
var/mob/living/carbon/human/H = M
accent_icon = H.get_accent_icon(speaking)
// --- Broadcast only to intercom devices ---
if(data == 1)
@@ -346,7 +352,7 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
var/part_b_extra = ""
if(data == 3) // intercepted radio message
part_b_extra = " <i>(Intercepted)</i>"
var/part_a = "<span class='[frequency_span_class(display_freq)]'><b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
var/part_a = "<span class='[frequency_span_class(display_freq)]'>[accent_icon ? accent_icon + " " : ""]<b>\[[freq_text]\][part_b_extra]</b> <span class='name'>" // goes in the actual output
// --- Some more pre-message formatting ---
var/part_b = "</span> <span class='message'>" // Tweaked for security headsets -- TLE
+4
View File
@@ -0,0 +1,4 @@
/datum/accent
var/name
var/description = "Unga Dunga."
var/tag_icon //those icons should go in accent_tags.dmi
+4
View File
@@ -0,0 +1,4 @@
/datum/accent/diona
name = ACCENT_DIONA
description = "An innate accent to all Diona, and can be detected in Diona across the Orion Spur, no matter the distance. It can be profoundly noticed on the sh, sk and ch sounding syllables."
tag_icon = "diona"
+126
View File
@@ -0,0 +1,126 @@
/datum/accent/ceti
name = ACCENT_CETI
description = "Often described as the \"true\" way of speaking Tau Ceti Basic, the Biesellite accent is easy to reproduce due to the phonetics of TCB."
tag_icon = "biesel"
/datum/accent/coc
name = ACCENT_COC
description = "The frontier is home to an unknowably vast amount of humans and settlements, covering everything from small outposts of only a few hundred to major planets such as \
Xanu Prime. The Frontiersfolk are as diverse as their accents are, but the most common \"frontier accent\" is generally regarded as that of Xanu Prime - the arguable capital of \
the massive Coalition of Colonies."
tag_icon = "coalition"
/datum/accent/elyra
name = ACCENT_ELYRA
description = "The typical Elyran accent is an odd combination of Tau Ceti Basic and Sol Common due to the Republic's independence from the Sol Alliance. The standard language \
of the Republic of Elyra is Elyran Common, a variation upon standard Sol Common that is closer to Tau Ceti Basic than other Sol Common dialects."
tag_icon = "elyra"
/datum/accent/eridani
name = ACCENT_ERIDANI
description = "The accent of Eridanian \"suits\" is almost universally looked upon as the accent of corporate excellence throughout the Sol Alliance and Republic of Biesel. \
Speaking with this accent is a surefire way to get one's foot into the door in the corporate world, and wealthier Suits often devote time and resources to refining their \
accent to be more properly Eridanian."
tag_icon = "eridani"
/datum/accent/eridani_dreg
name = ACCENT_ERIDANIDREG
description = "The Eridanian \"dreg\" accent is almost universally looked upon as the accent of petty criminals and ne'er-do-wells throughout the Orion Spur. \
Speaking with this accent in the proximity of most humans is a surefire way to gain their suspicion, and those speaking with this accent often find themselves under \
enhanced security surveillance in corporate facilities. Eagle Corp, one of the major employers of dregs in Eridani, devotes a significant amount of its training \
to making its dreg recruits drop this distinctive accent."
tag_icon = "eridani_dreg"
/datum/accent/sol
name = ACCENT_SOL
description = "The typical Solarian accent has a hundred tiny variants and can be found on a multitude of planets in countless systems, and is often simply regarded \
as the \"accent of humanity\" due to its prevalence. It can be found on planets as prominent as Earth or as obscure as settlements of only a few million in the Sol Alliance's Outer Ring."
tag_icon = "sol"
/datum/accent/scarab
name = ACCENT_SCARAB
description = "The common accent of the Scarab Fleet has dozens, perhaps hundreds, of small variations due to the Fleet itself being spread throughout a massive number of \
individual ships, most of which have their own unique variations upon the standard Scarab accent."
tag_icon = "scarabs"
/datum/accent/silversun
name = ACCENT_SILVERSUN
description = "The native accent of Silversun is a sing-songy take on standard Sol Common that has, since massive investment into the planet by Idris Incorporated, come to be \
associated with the planet's renowned tourism industry. Many native residents of Silversun are bitter that their accent - and planet - are seen as nothing more than an enormous \
vacation retreat by the greater Orion Spur."
tag_icon = "silversun"
/datum/accent/phong
name = ACCENT_PHONG
description = "New Hai Phongese Common is, compared to the typical Sol Common accent, much more tonal. This has lent it a distinctive accent that is easy to tell apart from the \
standard Sol Common accent associated with the Solarian core worlds. Due to the hazardous environmental conditions present on New Hai Phong, many residents of New Hai Phong \
carry another distinctive auditory cue: coughing and wheezing due to asthma."
tag_icon = "new_hai_phong"
/datum/accent/mars
name = ACCENT_MARTIAN
description = "Martian Common is a more guttural form of Sol Common that borrows some elements of Freespeak. The distinctive accent is, as a result, looked down upon as \
a \"hick\" dialect on Luna and Venus and regarded as the dialect of quarrelsome and annoying Martians elsewhere. Some Martians go to great lengths to hide their accents due to \
this reputation, which is still alive in the Republic of Biesel despite its separation from the greater Sol Alliance."
tag_icon = "mars"
/datum/accent/luna
name = ACCENT_LUNA
description = "The Lunarian accent is regarded throughout the Sol Alliance, and beyond, as a distinctive mark of being Lunarian. The accent is extremely hard for immigrants to Luna \
to pick up and replicate, and is carefully maintained by Lunarians abroad to keep their accent distinct. Many Idris Incorporated IPCs are programmed with Lunarian accents to make \
them seem high-class in both appearance and in accent."
tag_icon = "luna"
/datum/accent/gibson
name = ACCENT_GIBSON
description = "The New Gibsoner accent is very close to the accent of Tau Ceti proper, due to the nature of the planets colonization. However, New Gibsoners are known for talking \
with a faster and more clipped accent than those from Biesel and, at times, sound as if they are tripping over their words due to the rapid pace at which they speak."
tag_icon = "gibson"
/datum/accent/konyang
name = ACCENT_KONYAN
description = "The Konyanger Common accent is quite similar to standard Sol Common, but has drawn some influence from Freespeak due to Konyang's position near the border between \
the Sol Alliance and the Coalition of Colonies. A significant amount of IPCs possess a Konyanger accent, due to the planet being the origin of IPCs and a major producer of them."
tag_icon = "konyang"
/datum/accent/himeo
name = ACCENT_HIMEO
description = "Himean Common is more guttural and harsh-sounding than the typical Sol Common accent, due to Himeo's position in the Coalition of Colonies. The Himean accent and its \
distinctive guttural method of speaking are easily distinguishable from other Sol Common speakers, even when speaking Tau Ceti Basic or Freespeak. Himean Common has the unusual \
reputation of making its speaker always sound angry, no matter the speaker's mood, due to its more guttural nature."
tag_icon = "himeo"
/datum/accent/vysoka
name = ACCENT_VYSOKA
description = "The typical Vyoskan accent is regarded as a throatier and harsher variation of Freespeak, with the planetary accent possessing many harsh tones. Some non-Vysokans have \
noted that the accent sounds similar to Himean Common at times, due to both accents being more guttural than average. However, the Vysokan accent remains distinctive from Himean \
Common due to its roots in Freespeak rather than Sol Common."
tag_icon = "vysoka"
/datum/accent/venus
name = ACCENT_VENUS
description = "Venusian Common (referred time as Cytherean Common on Venus itself) is often regarded as the \"most common\" form of Sol Common due to the prevalence of its entertainment \
industry. It sounds extremely similar to Earthbound Sol Common. Many high-end entertainment IPCs used throughout human space come pre-programmed with this accent, due to its \
association with the Venusian entertainment industry."
tag_icon = "venus"
/datum/accent/venusjin
name = ACCENT_VENUSJIN
description = "Jintarian Common is looked down upon on Venus itself for its association with Venusian surfacers, and is often used by the planet's entertainment industry to mark a \
character as villainous or untrustworthy. As a result, it is often looked down upon throughout human space."
tag_icon = "venus_surfacer"
/datum/accent/dominia
name = ACCENT_DOMINIA
description = "The most common Dominian accent is Vulgar Morozi, a variation of Sol Common found upon Moroz itself. Dominion-spoken Sol Common and Tau Ceti Basic are both heavily \
influenced by Tradeband, the common language of both human and unathi nobility in the Empire. Vulgar Morozi has regional variations on the colonies of the Dominian Empire, and in \
the rebellious Morozian region of Fisanduh. The Fisanduhian accent is considered to be a distinctive higher-pitched variation of Vulgar Morozi that is often suppressed by insurgents \
to better blend in with the greater Imperial population."
tag_icon = "dominia"
/datum/accent/jupiter
name = ACCENT_JUPITER
description = "The Jovian accent is an odd mish-mash of accents from Jupiter's various moons, and has heavy variation on each of the moons. On Idris Incorporated-dominated Europa, \
the Jovian accent often takes on traces of Tradeband due to the amount of high-income tourism, while the Castillean Jovian accent is known for the rapid, breathless pace at which it \
is typically spoken. Ganymede is often seen as the \"standard\" Jovian accent, though some on Castillo vehemently believe that the Castillian accent should be the standard."
tag_icon = "jupiter"
+5
View File
@@ -0,0 +1,5 @@
/datum/accent/skrell
name = ACCENT_SKRELL
description = "The typical accent found in the Jargon Federation. It has remained the most popular accent for just under a millennium due to the influences of the psionic field Skrell \
share, and government influence; however it has not remained unchanged, especially as of recent due to the addition of alien populations to the Jargon Federation."
tag_icon = "skrell"
+68
View File
@@ -0,0 +1,68 @@
/datum/accent/republican_siik
name = ACCENT_REPUBICLANSIIK
description = "The dialect of north and central Ras'nrr. It was spoken by the Hadii dynasty and its subjects before being adopted as the official version of the People's Republic \
Siik'maas. This variation is taught in all Republican schools since the end of the first revolution and is considered as the most pure and correct form. PRA citizens are encouraged \
to learn and adopt it, as speaking another accent is frowned upon. It is notable for its unusually rigid grammatical construction as opposed to most other Adhomian dialects. \
Republican Siik'maas is the language of Hadiist loyalists, both in and outside of S'rand'marr."
tag_icon = "tajara"
/datum/accent/nazira_siik
name = ACCENT_NAZIRASIIK
description = "Nazira Siik'maas is native to the southern regions of Ras'nrr. This accent is the oldest and most solemn form of Siik'maas, avoiding contractions of words and speaking \
its sentences slowly. It is commonly associated with the church of S'rand'marr, due to its proximity to Sana Sahira. Priests are taught to replicate this dialect when conducting \
religious service."
tag_icon = "tajara_nazira"
/datum/accent/crevan
name = ACCENT_CREVAN
description = "Once the dialect of merchants and sailors across all Adhomai. Born from the melting pot that is Crevus, where Tajara from all the planet would bring and mix their \
cultures. Thanks to the importance of the city during its trading age, it can be found in most Tajara ports as well. Crevan Creole is known for its heavy focus on nasal sounds, with many \
Adhomian comedians parodying it."
tag_icon = "tajara_crevan"
/datum/accent/dasnrra_siik
name = ACCENT_DASNRRASIIK
description = "Found on the island of Das'nrra, this accent is famous for its emphasis at the end of vowels and uncommon pronunciation of glottal stops. While tracing its origins back \
to the rural population, it was shaped by the urban workers that emerged after the first revolution. It is associated with Democratic People's Republic citizens and its offworld \
community."
tag_icon = "tajara_dasnrra"
/datum/accent/high_harr_siik
name = ACCENT_HIGHHARRSIIK
description = "Used by the natives of northern Harr'masir. It is deemed to be a rustic and harsh-sounding form of siik'maas; the accent is associated with peasants and uneducated \
Tajara. It is the most common dialect among New Kingdom's commoners. The nobility usually attempts to mask this accent due to its relationship with the common people. It is also \
spoken by the New Kingdom population living in Tau Ceti."
tag_icon = "tajara_high_harr"
/datum/accent/low_harr_siik
name = ACCENT_LOWHARRSIIK
description = "Native to the southern area of Harr'masir. In comparison to other Siik'maas dialects - it is the one that deviates the most from the standard version. Due to Republican \
propaganda, it has gained the fame of being the tongue of criminals and guerrilla fighters. Most speakers are Democratic People's Republic citizens. Its words are spoken in a hushed \
manner."
tag_icon = "tajara_low_harr"
/datum/accent/amohda_siik
name = ACCENT_AMOHDASIIK
description = "Spoken by the Tajara from the island of Amohda. Despite past Republican attempts to destroy this dialect; it survived and is now undergoing a period of revival by Amohdan \
nationalists. It can also be found in the New kingdom because of the Amohda Exiles. Due to royalist influence, it has many Ya'ssa loan words. Amohdan Siik'maas has a characteristic \
drawl tone to it."
tag_icon = "tajara_amohda"
/datum/accent/rural_delvahhi
name = ACCENT_RURALDELVAHHI
description = "The form of Delvahhi spoken by settled zhan communities. It has been heavily influenced by Siik'maas. It is also used as the liturgical language by some Ma'ta'ke \
priests. Rural Delvahhi speakers usually speak siik'maas with a slower and throaty tone."
tag_icon = "tajara_rural"
/datum/accent/nomad_delvahhi
name = ACCENT_NOMADDELVAHHI
description = "The version of Delvahhi used by the Rhazar'Hrujmagh. It emerged after the breakup in the primordial Zhan-Khazan population. Unlike the rural dialect, it remained \
relatively unchanged over time. It is far more guttural and brief than its sister tongue. "
tag_icon = "tajara_nomad"
/datum/accent/old_yassa
name = ACCENT_OLDYASSA
description = "The tongue of the old Tajaran nobility, spoken by those who were born before the first revolution. It differs from the modern Ya'ssa by having a far more complex set \
of rules, long-drawn-out sentences and compound words. Old Ya'ssa is a dying tongue; as the version taught by the New Kingdom of Adhomai has mostly replaced it in the post-revolution \
noble generation."
tag_icon = "tajara_oldyassa"
+27
View File
@@ -0,0 +1,27 @@
/datum/accent/hegemon_noble
name = ACCENT_HEGEMON_NOBLE
description = "The Noble Hegemonic accent is eloquent and flowing, staying near the front of the mouth. Airy and filled with hissing, this accent requires birth-right or years of \
practice to properly convey. The families of Lords, Sk'akh Priests, noble warriors, and some merchants will often share this accent, and will mostly find the Sinta'Azaziba language \
and Traditionalist accent more savage. The Noble Hegemonic accent is primarily found in the Untouched Lands, and originates from the Sinta'Unathi language."
tag_icon = "hegemon_noble"
/datum/accent/hegemon_peasant
name = ACCENT_HEGEMON_PEASANT
description = "Lowborn guilds-workers, first-generation merchants, simple warrior levymen, and hundreds of other tasks for the common Clans - this is the most common accent for \
Unathi, stereotypically. It still holds a slight air of royalty to it compared to the Traditional accents. It is most commonly found in the crowded Untouched Lands and in colonies. \
It originates from the Sinta'Unathi language. "
tag_icon = "hegemon_peasant"
/datum/accent/trad_noble
name = ACCENT_TRAD_NOBLE
description = "A more guttural, droning accent - although one that would demand respect on Moghes before the Contact War, and still demands it in the Wasteland. Primarily born from the \
guttural intonations and physical movement required to communicate in Sinta'Azaziba, this Noble Traditional accent requires clan-training from a family member or shaman - and has \
become either a sign of survival or defeat to most who see this ancient accent fading from existence."
tag_icon = "trad_noble"
/datum/accent/trad_peasant
name = ACCENT_TRAD_PEASANT
description = "Primarily derived from the guttural intonations and physical movement of Sinta'Azaziba, common Unathi from the Wasteland would have this grittier speech pattern. \
Although filled with variety due to the multitude of kingdoms composed in the Wasteland, the borders of where these accents used to be set no longer exist and have simply become \
what it is now, struggling to find identity."
tag_icon = "trad_peasant"
+42
View File
@@ -45,3 +45,45 @@
#define RELIGION_HIVEPANTHEON "Hive Pantheon"
#define RELIGION_PREIMMINENNCE "Preimminennce"
#define RELIGION_PILOTDREAM "Pilot Dream"
//accent defines
#define ACCENT_CETI "Biesellite"
#define ACCENT_COC "Frontiersfolk"
#define ACCENT_ELYRA "Elyran"
#define ACCENT_ERIDANI "Eridanian"
#define ACCENT_ERIDANIDREG "Eridanian Dreg"
#define ACCENT_SOL "Solarian"
#define ACCENT_SCARAB "Scarab Fleets"
#define ACCENT_SILVERSUN "Silversun"
#define ACCENT_PHONG "New Hai Phongese"
#define ACCENT_MARTIAN "Martian"
#define ACCENT_KONYAN "Konyanger"
#define ACCENT_LUNA "Lunan"
#define ACCENT_GIBSON "New Gibsoner"
#define ACCENT_HIMEO "Himean"
#define ACCENT_VYSOKA "Vysokan"
#define ACCENT_VENUS "Venusian Cytherean"
#define ACCENT_VENUSJIN "Venusian Jintarian"
#define ACCENT_DOMINIA "Dominian"
#define ACCENT_JUPITER "Jovian"
#define ACCENT_REPUBICLANSIIK "Republican Siik'maas"
#define ACCENT_NAZIRASIIK "Nazira Siik'maas"
#define ACCENT_CREVAN "Crevan Creole"
#define ACCENT_DASNRRASIIK "Das'nrra Siik'maas:"
#define ACCENT_HIGHHARRSIIK "High-Harr'masir Siik'maas"
#define ACCENT_LOWHARRSIIK "Lower-Harr'masir Siik'maas"
#define ACCENT_AMOHDASIIK "Amohdan Siik'maas"
#define ACCENT_RURALDELVAHHI "Rural Delvahhi"
#define ACCENT_NOMADDELVAHHI "Nomadic Delvahhi"
#define ACCENT_OLDYASSA "Old Ya'ssa"
#define ACCENT_HEGEMON_NOBLE "Noble Hegemonic"
#define ACCENT_HEGEMON_PEASANT "Peasant Hegemonic"
#define ACCENT_TRAD_NOBLE "Noble Traditional"
#define ACCENT_TRAD_PEASANT "Peasant Traditional"
#define ACCENT_SKRELL "Standard Nral'Malic"
#define ACCENT_DIONA "Diona"
@@ -8,6 +8,7 @@
S["gen_record"] >> pref.gen_record
S["citizenship"] >> pref.citizenship
S["religion"] >> pref.religion
S["accent"] >> pref.accent
S["nanotrasen_relation"] >> pref.nanotrasen_relation
/datum/category_item/player_setup_item/general/background/save_character(var/savefile/S)
@@ -16,6 +17,7 @@
S["gen_record"] << pref.gen_record
S["citizenship"] << pref.citizenship
S["religion"] << pref.religion
S["accent"] << pref.accent
S["nanotrasen_relation"] << pref.nanotrasen_relation
/datum/category_item/player_setup_item/general/background/gather_load_query()
@@ -33,7 +35,8 @@
"vars" = list(
"nt_relation" = "nanotrasen_relation",
"citizenship",
"religion"
"religion",
"accent"
),
"args" = list("id")
)
@@ -56,7 +59,9 @@
"ss13_characters" = list(
"nt_relation",
"citizenship",
"religion","id" = 1,
"religion",
"accent",
"id" = 1,
"ckey" = 1
)
)
@@ -70,6 +75,7 @@
"nt_relation" = pref.nanotrasen_relation,
"citizenship" = pref.citizenship,
"religion" = pref.religion,
"accent" = pref.accent,
"id" = pref.current_character,
"ckey" = PREF_CLIENT_CKEY
)
@@ -87,6 +93,9 @@
if(!(pref.religion in S.allowed_religions))
pref.religion = RELIGION_NONE
if(!(pref.accent in S.allowed_accents))
pref.accent = S.default_accent
pref.nanotrasen_relation = sanitize_inlist(pref.nanotrasen_relation, COMPANY_ALIGNMENTS, initial(pref.nanotrasen_relation))
/datum/category_item/player_setup_item/general/background/content(var/mob/user)
@@ -95,6 +104,7 @@
"[current_map.company_name] Relation: <a href='?src=\ref[src];nt_relation=1'>[pref.nanotrasen_relation]</a><br/>",
"Citizenship: <a href='?src=\ref[src];citizenship=1'>[pref.citizenship]</a><br/>",
"Religion: <a href='?src=\ref[src];religion=1'>[pref.religion]</a><br/>",
"Accent: <a href='?src=\ref[src];accent=1'>[pref.accent]</a><br/>",
"<br/><b>Records</b>:<br/>"
)
@@ -142,6 +152,18 @@
sanitize_character()
return TOPIC_REFRESH
else if(href_list["accent"])
var/choice = input(user, "Please choose an accent.", "Character Preference", pref.accent) as null|anything in S.allowed_accents
if(!choice || !CanUseTopic(user))
return TOPIC_NOACTION
show_accent_menu(user, choice)
return TOPIC_REFRESH
else if(href_list["set_accent"])
pref.accent = (html_decode(href_list["set_accent"]))
sanitize_character()
return TOPIC_REFRESH
else if(href_list["set_medical_records"])
var/new_medical = sanitize(input(user,"Enter medical information here.","Character Preference", html_decode(pref.med_record)) as message|null, MAX_PAPER_MESSAGE_LEN, extra = 0)
if(!isnull(new_medical) && !jobban_isbanned(user, "Records") && CanUseTopic(user))
@@ -194,4 +216,14 @@
var/list/dat = list("<center><b>[religion.name]</center></b>")
dat += "<br>[religion.description]"
dat += "<br><center>\[<a href='?src=\ref[src];set_religion=[html_encode(religion.name)]'>Select</a>\]</center>"
show_browser(user, dat.Join(), "window=religionpreview;size=400x500")
show_browser(user, dat.Join(), "window=religionpreview;size=400x500")
/datum/category_item/player_setup_item/general/background/proc/show_accent_menu(mob/user, selected_accent)
var/datum/accent/accent = SSrecords.accents[selected_accent]
if(accent)
var/list/dat = list("<center><b>[accent.name]</center></b>")
dat += "<br>[accent.description]"
dat += "<br><center>\[<a href='?src=\ref[src];set_accent=[html_encode(accent.name)]'>Select</a>\]</center>"
show_browser(user, dat.Join(), "window=accentpreview;size=400x500")
+3
View File
@@ -80,6 +80,7 @@ datum/preferences
var/citizenship = "None" //Current home system.
var/faction = "None" //Antag faction/general associated faction.
var/religion = "None" //Religious association.
var/accent = "None" //Character accent.
//Mob preview
var/icon/preview_icon = null
@@ -370,6 +371,7 @@ datum/preferences
character.citizenship = citizenship
character.employer_faction = faction
character.religion = religion
character.accent = accent
character.skills = skills
character.used_skillpoints = used_skillpoints
@@ -530,6 +532,7 @@ datum/preferences
citizenship = "None"
faction = "None"
religion = "None"
accent = "None"
species = "Human"
+10
View File
@@ -3,6 +3,7 @@
desc = "A voice scrambling module. If you can see this, report it as a bug on the tracker."
var/voice //If set and item is present in mask/suit, this name will be used for the wearer's speech.
var/active
var/current_accent = ACCENT_CETI
/obj/item/clothing/mask/gas/voice
var/obj/item/voice_changer/changer
@@ -25,6 +26,15 @@
changer.voice = voice
to_chat(usr, span("notice", "You are now mimicking <B>[changer.voice]</B>."))
/obj/item/clothing/mask/gas/voice/verb/Toggle_Accent()
set category = "Object"
set src in usr
var/choice = input(usr, "Please choose an accent to mimick.") as null|anything in SSrecords.accents
if(choice)
to_chat(usr, span("notice", "You are now mimicking the [choice] accent."))
changer.current_accent = choice
/obj/item/clothing/mask/gas/voice/Initialize()
. = ..()
changer = new(src)
@@ -399,7 +399,7 @@
if(!..())
return 0
var/choice= input("Would you like to toggle the synthesiser or set the name?") as null|anything in list("Enable","Disable","Set Name")
var/choice= input("Would you like to toggle the synthesiser, set the name or set an accent?") as null|anything in list("Enable","Disable","Set Name", "Set Accent")
if(!choice)
return 0
@@ -419,6 +419,12 @@
return 0
voice_holder.voice = raw_choice
to_chat(usr, "<font color='blue'>You are now mimicking <B>[voice_holder.voice]</B>.</font>")
if("Set Accent")
var/raw_choice = input(usr, "Please choose an accent to mimick.") as null|anything in SSrecords.accents
if(!raw_choice)
return 0
voice_holder.current_accent = raw_choice
to_chat(usr, span("notice", "You are now mimicking the [raw_choice] accent."))
return 1
/obj/item/rig_module/maneuvering_jets
+12 -5
View File
@@ -41,11 +41,15 @@
else
message = stars(message)
var/accent_icon
var/speaker_name = speaker.name
if(ishuman(speaker))
var/mob/living/carbon/human/H = speaker
speaker_name = H.GetVoice()
accent_icon = H.get_accent_icon(language)
if(italics)
message = "<i>[message]</i>"
@@ -72,7 +76,7 @@
to_chat(src, "<span class='name'>[speaker_name]</span>[alt_name] talks but you cannot hear \him.")
else
if(language)
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
on_hear_say("[track][accent_icon ? accent_icon + " " : ""]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [language.format_message(message, verb)]</span>")
else
on_hear_say("[track]<span class='game say'><span class='name'>[speaker_name]</span>[alt_name] [verb], <span class='message'><span class='body'>\"[message]\"</span></span></span>")
if (speech_sound && (get_dist(speaker, src) <= world.view && src.z == speaker.z))
@@ -141,6 +145,7 @@
speaker_name = "Unknown"
var/changed_voice
var/accent_icon
if(istype(src, /mob/living/silicon/ai) && !hard_to_hear)
var/jobname // the mob's "job"
@@ -153,7 +158,6 @@
changed_voice = 1
var/list/impersonated = new()
var/mob/living/carbon/human/I = impersonated[speaker_name]
if(!I)
for(var/mob/living/carbon/human/M in mob_list)
if(M.real_name == speaker_name)
@@ -205,15 +209,18 @@
if(prob(20))
to_chat(src, "<span class='warning'>You feel your headset vibrate but can hear nothing from it!</span>")
else
on_hear_radio(part_a, speaker_name, track, part_b, formatted)
on_hear_radio(part_a, speaker_name, track, part_b, formatted, accent_icon)
/proc/say_timestamp()
return "<span class='say_quote'>\[[worldtime2text()]\]</span>"
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
/mob/proc/on_hear_radio(part_a, speaker_name, track, part_b, formatted, accent_icon)
var/accent_tag
if(accent_icon)
accent_tag = "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[accent_icon]'>"
to_chat(src, "[part_a][speaker_name][part_b][formatted]")
if(vr_mob)
to_chat(vr_mob, "[part_a][speaker_name][part_b][formatted]")
to_chat(vr_mob, "[part_a][accent_tag][speaker_name][part_b][formatted]")
/mob/abstract/observer/on_hear_radio(part_a, speaker_name, track, part_b, formatted)
to_chat(src, "[track][part_a][speaker_name][part_b][formatted]")
+4 -1
View File
@@ -11,7 +11,7 @@
/datum/language/noise/format_message_plain(message, verb)
return message
/datum/language/noise/format_message_radio(message, verb)
/datum/language/noise/format_message_radio(message, verb, accent)
return "<span class='[colour]'>[message]</span>"
/datum/language/noise/get_talkinto_msg_range(message)
@@ -26,6 +26,7 @@
whisper_verb = "whispers"
key = "0"
flags = RESTRICTED|TCOMSSIM
allow_accents = TRUE
syllables = list("a", "ado", "ago", "aj", "ajn", "al", "alt", "am", "amas", "an", "ang", "ante", "ap", "ard", "arma", "aro", "as", "aur", "aut", "aw", "ba", "bal", "bao", "be", "beau", "bel", "bi", "bit", "blu", "bo", "bod", "boj", "bojn", "bu", "but", "ca", "caj", "ce", "cer", "chun",
"ci", "cion", "coj", "cor", "da", "daj", "dan", "de", "den", "dis", "do", "dor", "dorm", "eco", "ego", "ek", "eks", "en", "ero", "es", "est", "et", "eve", "fa", "fe", "fel", "fla", "foj", "fra", "fraz", "fros", "ful", "fut", "ga", "gan", "gar", "gi", "gis", "go", "gran", "ha", "han", "hav",
"hom", "hong", "hu", "hum", "hushi", "ia", "iaj", "ica", "id", "idon", "il", "in", "ing", "io", "is", "iton", "iza", "ja", "ji", "jirou", "joj", "ka", "kaj", "kajo", "kan", "ke", "ket", "ki", "kna", "krio", "ku", "kui", "kuk", "kun", "kur", "la", "laca", "leng", "les", "li", "liao", "lib",
@@ -50,6 +51,7 @@
colour = "say_quote"
key = "2"
flags = TCOMSSIM
allow_accents = TRUE
syllables = list("a", "acc", "ai", "al", "ali", "am", "ama", "ami", "amo", "an", "ang", "arme", "ave", "ba", "bai", "bar", "bat", "bi", "blie", "bris", "ca", "can", "cant", "car", "care", "ce", "ci", "cis", "cit", "cla", "co", "cul", "cur", "curt", "da", "dam", "dans", "de",
"di", "dier", "dim", "dins", "dorm", "du", "duro", "e", "eaux", "ec", "ecto", "ees", "ego", "el", "en", "ent", "er", "ere", "eres", "eri", "ero", "es", "et", "ex", "far", "fi", "fic", "fine", "fol", "foll", "fri", "fro", "gen", "gil", "go", "gran", "hab", "ho", "huc", "ia",
"iam", "ibus", "idor", "ie", "iens", "ier", "ieur", "iis", "il", "in", "ine", "int", "ir", "is", "ise", "it", "itt", "jar", "je", "jo", "jor", "la", "lar", "lav", "le", "lees", "ler", "les", "li", "lib", "lie", "lo", "lu", "ma", "man", "manu", "mar", "mari", "mas", "me", "mea",
@@ -66,6 +68,7 @@
colour = "rough"
key = "3"
flags = TCOMSSIM
allow_accents = TRUE
syllables = list("a", "aan", "aas", "ab", "aba", "ad", "aee", "aft", "ag", "ai", "aise", "ak", "akee", "aq", "ar", "ata", "aur", "aus", "ba", "baat", "bach", "bad", "bahe", "band", "be", "ben", "ber", "bhaa", "bhu", "bra", "burt", "cap", "cer", "ch", "cha", "chaar", "chale", "chalo", "chil",
"com", "da", "daa", "daaj", "dat", "de", "dee", "dhaa", "di", "die", "dik", "din", "diz", "do", "dos", "dosh", "durch", "eer", "ek", "er", "es", "fal", "fang", "fra", "fun", "ga", "gan", "gao", "gee", "geet", "gern", "gir", "gon", "gren", "gri", "gu", "guda", "ha", "haa", "hai", "hain", "har",
"hat", "he", "hee", "heer", "hekt", "heu", "hit", "hn", "ho", "hua", "huk", "hul", "ich", "ig", "in", "isch", "ja", "jaa", "jad", "jan", "jao", "jar", "jas", "jee", "jiao", "jin", "jing ", "un", "ka", "kaha", "kana", "kar", "kara", "karo", "ke ", "kee", "keln", "kha", "khada", "khe", "khi", "ko",
+1
View File
@@ -20,6 +20,7 @@
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
var/list/partial_understanding // List of languages that can /somehwat/ understand it, format is: name = chance of understanding a word
var/machine_understands = TRUE // Whether machines can parse and understand this language
var/allow_accents = FALSE
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
if(!syllables || !syllables.len)
+7
View File
@@ -29,6 +29,7 @@
colour = "soghun"
key = "o"
flags = WHITELISTED|TCOMSSIM
allow_accents = TRUE
space_chance = 40
syllables = list(
"za", "az", "ze", "ez", "zi", "iz", "zo", "oz", "zu", "uz", "zs", "sz",
@@ -40,6 +41,7 @@
"a", "a", "e", "e", "i", "i", "o", "o", "u", "u", "s", "s"
)
partial_understanding = list(LANGUAGE_AZAZIBA = 25)
allow_accents = TRUE
// tajaran languages
/datum/language/tajaran
@@ -56,6 +58,7 @@
"ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
"hal","ket","jurl","mah","tul","cresh","azu","ragh","mro","mra","mrro","mrra")
partial_understanding = list(LANGUAGE_SIIK_TAJR = 50, LANGUAGE_YA_SSA = 25, LANGUAGE_DELVAHII = 50)
allow_accents = TRUE
/datum/language/tajaran/get_random_name(var/gender)
@@ -108,6 +111,7 @@
"kan","aesi","fare","we","bash","arha","quara","zhir","sem","make","hrer","nja","rir","can","jhun","dar","rik","kah",
"hal","kete","juril","mah","tul","cresh","azu","ragh","miro","mara","mrero","mrara")
partial_understanding = list(LANGUAGE_SIIK_MAAS = 50)
allow_accents = TRUE
/datum/language/delvahhi
name = LANGUAGE_DELVAHII
@@ -123,6 +127,7 @@
"ka","aasi","far","wa","baq","ara","qara","zir","sam","mak","hrar","nja","rir","khan","jun","dar","rik","kah",
"hal","ket","jurl","mah","tul","cresh","azu","ragh","mro","mra","mrro","mrra")
partial_understanding = list(LANGUAGE_SIIK_MAAS = 50)
allow_accents = TRUE
/datum/language/skrell
name = LANGUAGE_SKRELLIAN
@@ -134,6 +139,7 @@
key = "k"
flags = WHITELISTED|TCOMSSIM
syllables = list("qr","qrr","xuq","qil","quum","xuqm","vol","xrim","zaoo","qu-uu","qix","qoo","zix","*","!")
allow_accents = TRUE
/datum/language/skrell/get_random_name()
var/new_name = ""
@@ -240,6 +246,7 @@
"shang", "shen", "sheng", "shi", "sho", "shui", "si", "su", "sui", "sum", "sun", "swi", "ta", "tae", "tai", "tame", "tamen", "tan", "te", "tei", "ti", "tian", "to", "ton", "tsu", "ul", "wa", "wan", "wang", "wei", "wo", "xi", "xian",
"xiao", "xing", "xiong", "xiu", "xu", "xuan", "xue", "ya", "yan", "yang", "yeong", "yi", "yige", "yin", "ying", "yiqi", "yong", "you", "yu", "yuli", "yuyi", "zai", "zao", "zhan", "zhang", "zhe", "zhen", "zheng", "zhuo", "zi", "zo",
"zu", "zun", "zuo")
allow_accents = TRUE
/datum/language/human/get_spoken_verb(var/msg_end)
switch(msg_end)
@@ -1992,3 +1992,35 @@
var/scale = min(1, round(P.damage / 50, 0.2))
var/matrix/M = new()
B.transform = M.Scale(scale)
/mob/living/carbon/human/proc/get_accent_icon(var/datum/language/speaking = null)
if(accent && speaking && speaking.allow_accents)
var/used_accent = accent //starts with the mob's default accent
if(istype(back,/obj/item/rig)) //checks for the rig voice changer module
var/obj/item/rig/rig = back
if(rig.speech && rig.speech.voice_holder && rig.speech.voice_holder.active && rig.speech.voice_holder.current_accent)
used_accent = rig.speech.voice_holder.current_accent
for(var/obj/item/gear in list(wear_mask,wear_suit,head)) //checks for voice changers masks now
if(gear)
var/obj/item/voice_changer/changer = locate() in gear
if(changer && changer.active && changer.current_accent)
used_accent = changer.current_accent
var/datum/accent/a = SSrecords.accents[used_accent]
var/final_icon = a.tag_icon
return "<IMG src='\ref['./icons/accent_tags.dmi']' class='text_tag' iconstate='[final_icon]'>"
/mob/living/carbon/human/proc/generate_valid_accent()
var/list/valid_accents = new()
for(var/current_accents in species.allowed_accents)
valid_accents += current_accents
return valid_accents
/mob/living/carbon/human/proc/set_accent(var/new_accent)
accent = new_accent
if(!(accent in species.allowed_accents))
accent = species.default_accent
return TRUE
@@ -44,6 +44,7 @@
var/citizenship = ""
var/employer_faction = ""
var/religion = ""
var/accent = ""
//Equipment slots
var/obj/item/wear_suit = null
@@ -236,6 +236,9 @@
var/list/allowed_citizenships = list(CITIZENSHIP_BIESEL, CITIZENSHIP_SOL, CITIZENSHIP_COALITION, CITIZENSHIP_ELYRA, CITIZENSHIP_ERIDANI, CITIZENSHIP_DOMINIA)
var/list/allowed_religions = list(RELIGION_NONE, RELIGION_OTHER, RELIGION_CHRISTIANITY, RELIGION_ISLAM, RELIGION_JUDAISM, RELIGION_HINDU, RELIGION_BUDDHISM, RELIGION_MOROZ, RELIGION_TRINARY, RELIGION_SCARAB)
var/default_citizenship = CITIZENSHIP_BIESEL
var/list/allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_MARTIAN, ACCENT_LUNA, ACCENT_VENUS, ACCENT_VENUSJIN, ACCENT_COC, ACCENT_ELYRA, ACCENT_ERIDANI,
ACCENT_ERIDANIDREG, ACCENT_VYSOKA, ACCENT_HIMEO, ACCENT_PHONG, ACCENT_SILVERSUN, ACCENT_DOMINIA)
var/default_accent = ACCENT_CETI
var/zombie_type //What zombie species they become
var/list/character_color_presets
var/bodyfall_sound = "bodyfall" //default, can be used for species specific falling sounds
@@ -120,6 +120,9 @@
allowed_citizenships = list(CITIZENSHIP_BIESEL, CITIZENSHIP_JARGON, CITIZENSHIP_SOL, CITIZENSHIP_COALITION, CITIZENSHIP_DOMINIA, CITIZENSHIP_IZWESKI, CITIZENSHIP_NONE)
allowed_religions = list(RELIGION_QEBLAK, RELIGION_WEISHII, RELIGION_MOROZ, RELIGION_THAKH, RELIGION_SKAKH, RELIGION_NONE, RELIGION_OTHER)
allowed_accents = list(ACCENT_DIONA)
default_accent = ACCENT_DIONA
/datum/species/diona/handle_sprint_cost(var/mob/living/carbon/H, var/cost)
var/datum/dionastats/DS = H.get_dionastats()
@@ -21,6 +21,7 @@
hazard_low_pressure = 10
examine_color = "#C2AE95"
allowed_accents = list(ACCENT_SCARAB, ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_MARTIAN, ACCENT_COC, ACCENT_ELYRA, ACCENT_ERIDANI, ACCENT_HIMEO, ACCENT_ERIDANIDREG, ACCENT_DOMINIA)
/datum/species/human/offworlder/equip_later_gear(var/mob/living/carbon/human/H)
if(istype(H.get_equipped_item(slot_back), /obj/item/storage/backpack))
@@ -116,6 +116,9 @@
default_citizenship = CITIZENSHIP_NONE
bodyfall_sound = "bodyfall_machine"
allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_COC, ACCENT_ERIDANIDREG, ACCENT_KONYAN, ACCENT_JUPITER, ACCENT_MARTIAN, ACCENT_LUNA, ACCENT_HIMEO, ACCENT_VENUS,
ACCENT_JUPITER)
// Special snowflake machine vars.
var/sprint_temperature_factor = 1.15
var/sprint_charge_factor = 0.65
@@ -73,6 +73,9 @@
bodyfall_sound = "bodyfall"
allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_COC, ACCENT_ERIDANI, ACCENT_ERIDANIDREG, ACCENT_KONYAN, ACCENT_JUPITER, ACCENT_SILVERSUN, ACCENT_LUNA,
ACCENT_VENUS, ACCENT_MARTIAN, ACCENT_HIMEO)
/datum/species/machine/shell/get_light_color()
return
@@ -444,6 +447,9 @@
/mob/living/carbon/human/proc/check_tag
)
allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_COC, ACCENT_ERIDANI, ACCENT_ERIDANIDREG, ACCENT_KONYAN, ACCENT_JUPITER, ACCENT_SILVERSUN, ACCENT_LUNA,
ACCENT_VENUS, ACCENT_MARTIAN, ACCENT_HIMEO)
/datum/species/machine/zenghu/get_light_color(mob/living/carbon/human/H)
if (istype(H))
return rgb(H.r_eyes, H.g_eyes, H.b_eyes)
@@ -491,6 +497,8 @@
/mob/living/carbon/human/proc/check_tag
)
allowed_accents = list(ACCENT_CETI, ACCENT_GIBSON, ACCENT_SOL, ACCENT_COC, ACCENT_ERIDANI, ACCENT_ERIDANIDREG, ACCENT_KONYAN, ACCENT_JUPITER, ACCENT_SILVERSUN, ACCENT_LUNA, ACCENT_VENUS)
/datum/species/machine/bishop/get_light_color(mob/living/carbon/human/H)
if (istype(H))
return rgb(H.r_eyes, H.g_eyes, H.b_eyes)
@@ -59,6 +59,9 @@
allowed_religions = list(RELIGION_QEBLAK, RELIGION_WEISHII, RELIGION_NONE, RELIGION_OTHER, RELIGION_CHRISTIANITY, RELIGION_ISLAM, RELIGION_MOROZ)
default_citizenship = CITIZENSHIP_JARGON
default_accent = ACCENT_SKRELL
allowed_accents = list(ACCENT_SKRELL)
zombie_type = "Skrell Zombie"
/datum/species/skrell/handle_post_spawn(mob/living/carbon/human/H)
@@ -75,6 +75,9 @@
default_citizenship = CITIZENSHIP_PRA
allowed_religions = list(RELIGION_TWINSUNS, RELIGION_MATAKE, RELIGION_RASKARA, RELIGION_NONE, RELIGION_OTHER, RELIGION_CHRISTIANITY, RELIGION_ISLAM, RELIGION_MOROZ)
default_accent = ACCENT_REPUBICLANSIIK
allowed_accents = list(ACCENT_REPUBICLANSIIK, ACCENT_NAZIRASIIK, ACCENT_CREVAN, ACCENT_DASNRRASIIK, ACCENT_HIGHHARRSIIK, ACCENT_LOWHARRSIIK, ACCENT_AMOHDASIIK, ACCENT_OLDYASSA)
zombie_type = "Tajara Zombie"
/datum/species/tajaran/after_equip(var/mob/living/carbon/human/H)
@@ -30,6 +30,9 @@
primitive_form = "Zhan-Khazan Farwa"
allowed_accents = list(ACCENT_REPUBICLANSIIK, ACCENT_NAZIRASIIK, ACCENT_CREVAN, ACCENT_DASNRRASIIK, ACCENT_HIGHHARRSIIK, ACCENT_LOWHARRSIIK, ACCENT_AMOHDASIIK,
ACCENT_RURALDELVAHHI, ACCENT_NOMADDELVAHHI)
/datum/species/tajaran/m_sai
name = "M'sai Tajara"
name_plural = "M'sai Tajaran"
@@ -56,3 +59,4 @@
primitive_form = "M'sai Farwa"
secondary_langs = list(LANGUAGE_SIIK_MAAS, LANGUAGE_SIIK_TAJR, LANGUAGE_SIGN_TAJARA)
allowed_accents = list(ACCENT_REPUBICLANSIIK, ACCENT_NAZIRASIIK, ACCENT_CREVAN, ACCENT_DASNRRASIIK, ACCENT_HIGHHARRSIIK, ACCENT_LOWHARRSIIK, ACCENT_AMOHDASIIK)
@@ -104,6 +104,9 @@
zombie_type = "Unathi Zombie"
default_accent = ACCENT_HEGEMON_PEASANT
allowed_accents = list(ACCENT_HEGEMON_NOBLE, ACCENT_HEGEMON_PEASANT, ACCENT_TRAD_NOBLE, ACCENT_TRAD_PEASANT, ACCENT_DOMINIA)
/datum/species/unathi/after_equip(var/mob/living/carbon/human/H)
. = ..()
if(H.shoes)
@@ -127,6 +127,8 @@
allowed_religions = list(RELIGION_HIVEPANTHEON, RELIGION_PREIMMINENNCE, RELIGION_PILOTDREAM, RELIGION_NONE, RELIGION_OTHER)
default_citizenship = CITIZENSHIP_ZORA
allowed_accents = list(ACCENT_CETI)
/datum/species/bug/before_equip(var/mob/living/carbon/human/H)
. = ..()
H.gender = NEUTER
@@ -6,6 +6,7 @@
var/list/valid_species = list()
var/list/valid_hairstyles = list()
var/list/valid_facial_hairstyles = list()
var/list/valid_accents = list()
var/check_whitelist
var/list/whitelist
@@ -99,6 +100,11 @@
if(owner.change_eye_color(r_eyes, g_eyes, b_eyes))
update_dna()
return 1
if(href_list["accent"])
if(can_change(APPEARANCE_GENDER) && (href_list["accent"] in valid_accents))
if(owner.set_accent(href_list["accent"]))
cut_and_generate_data()
return 1
return 0
@@ -119,6 +125,14 @@
data["species"] = species
data["change_gender"] = can_change(APPEARANCE_GENDER)
data["accent"] = owner.accent
data["change_accent"] = can_change(APPEARANCE_GENDER)
if(data["change_accent"])
var/accents[0]
for(var/accent in valid_accents)
accents[++accents.len] = list("accent" = accent)
data["accents"] = accents
data["change_skin_tone"] = can_change_skin_tone()
data["change_skin_color"] = can_change_skin_color()
data["change_skin_preset"] = can_change_skin_preset()
@@ -168,6 +182,7 @@
// Making the assumption that the available species remain constant
valid_facial_hairstyles.Cut()
valid_facial_hairstyles.Cut()
valid_accents.Cut()
generate_data()
/datum/nano_module/appearance_changer/proc/generate_data()
@@ -178,3 +193,5 @@
if(!valid_hairstyles.len || !valid_facial_hairstyles.len)
valid_hairstyles = owner.generate_valid_hairstyles(check_gender = 0)
valid_facial_hairstyles = owner.generate_valid_facial_hairstyles()
if(!valid_accents.len)
valid_accents = owner.generate_valid_accent()
+6
View File
@@ -0,0 +1,6 @@
author: Alberyk, Kyres1
delete-after: True
changes:
- rscadd: "Added an accent option in the character creation menu. It will display a small tag next to the character's text when speaking a language that allows accents."
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+13
View File
@@ -23,6 +23,19 @@
</div>
{{/if}}
{{if data.change_accent}}
<div class="item">
<div class="itemLabelNarrow">
Accents:
</div>
<div class="itemContentWide">
{{for data.accents}}
{{:helper.link(value.accent, null, { 'accent' : value.accent}, null, data.accent == value.accent ? 'selected' : null)}}
{{/for}}
</div>
</div>
{{/if}}
{{if data.change_eye_color || data.change_skin_tone || data.change_skin_color || data.change_hair_color || data.change_facial_hair_color}}
<div class="item">
<div class="itemLabelNarrow">