-
Notifications
You must be signed in to change notification settings - Fork 4.9k
/
Copy pathnames.dm
157 lines (113 loc) · 4.36 KB
/
names.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
/// A preference for a name. Used not just for normal names, but also for clown names, etc.
/datum/preference/name
category = "names"
priority = PREFERENCE_PRIORITY_NAMES
savefile_identifier = PREFERENCE_CHARACTER
abstract_type = /datum/preference/name
/// The display name when showing on the "other names" panel
var/explanation
/// These will be grouped together on the preferences menu
var/group
/// Whether or not to allow numbers in the person's name
var/allow_numbers = FALSE
/// If the highest priority job matches this, will prioritize this name in the UI
var/relevant_job
/datum/preference/name/apply_to_human(mob/living/carbon/human/target, value)
// Only real_name applies directly, everything else is applied by something else
return
/datum/preference/name/deserialize(input, datum/preferences/preferences)
return reject_bad_name("[input]", allow_numbers)
/datum/preference/name/serialize(input)
// `is_valid` should always be run before `serialize`, so it should not
// be possible for this to return `null`.
return reject_bad_name(input, allow_numbers)
/datum/preference/name/is_valid(value)
return istext(value) && !isnull(reject_bad_name(value, allow_numbers))
/// A character's real name
/datum/preference/name/real_name
explanation = "Name"
// The `_` makes it first in ABC order.
group = "_real_name"
savefile_key = "real_name"
/datum/preference/name/real_name/apply_to_human(mob/living/carbon/human/target, value)
target.real_name = value
target.name = value
target.log_mob_tag("RENAMED: [key_name(target)]")
/datum/preference/name/real_name/create_informed_default_value(datum/preferences/preferences)
var/species_type = preferences.read_preference(/datum/preference/choiced/species)
var/gender = preferences.read_preference(/datum/preference/choiced/gender)
var/datum/species/species = new species_type
return species.random_name(gender, unique = TRUE)
/datum/preference/name/real_name/deserialize(input, datum/preferences/preferences)
input = ..(input)
if (!input)
return input
if (CONFIG_GET(flag/humans_need_surnames) && preferences.read_preference(/datum/preference/choiced/species) == /datum/species/human)
var/first_space = findtext(input, " ")
if(!first_space) //we need a surname
input += " [pick(GLOB.last_names)]"
else if(first_space == length(input))
input += "[pick(GLOB.last_names)]"
return reject_bad_name(input, allow_numbers)
/// The name for a backup human, when nonhumans are made into head of staff
/datum/preference/name/backup_human
explanation = "Backup human name"
group = "backup_human"
savefile_key = "human_name"
/datum/preference/name/backup_human/create_informed_default_value(datum/preferences/preferences)
var/gender = preferences.read_preference(/datum/preference/choiced/gender)
return random_unique_name(gender)
/datum/preference/name/clown
savefile_key = "clown_name"
explanation = "Clown name"
group = "fun"
relevant_job = /datum/job/clown
/datum/preference/name/clown/create_default_value()
return pick(GLOB.clown_names)
/datum/preference/name/mime
savefile_key = "mime_name"
explanation = "Mime name"
group = "fun"
relevant_job = /datum/job/mime
/datum/preference/name/mime/create_default_value()
return pick(GLOB.mime_names)
/datum/preference/name/cyborg
savefile_key = "cyborg_name"
allow_numbers = TRUE
can_randomize = FALSE
explanation = "Cyborg name"
group = "silicons"
relevant_job = /datum/job/cyborg
/datum/preference/name/cyborg/create_default_value()
return DEFAULT_CYBORG_NAME
/datum/preference/name/ai
savefile_key = "ai_name"
allow_numbers = TRUE
explanation = "AI name"
group = "silicons"
relevant_job = /datum/job/ai
/datum/preference/name/ai/create_default_value()
return pick(GLOB.ai_names)
/datum/preference/name/religion
savefile_key = "religion_name"
allow_numbers = TRUE
explanation = "Religion name"
group = "religion"
/datum/preference/name/religion/create_default_value()
return pick(GLOB.religion_names)
/datum/preference/name/deity
savefile_key = "deity_name"
allow_numbers = TRUE
can_randomize = FALSE
explanation = "Deity name"
group = "religion"
/datum/preference/name/deity/create_default_value()
return DEFAULT_DEITY
/datum/preference/name/bible
savefile_key = "bible_name"
allow_numbers = TRUE
can_randomize = FALSE
explanation = "Bible name"
group = "religion"
/datum/preference/name/bible/create_default_value()
return DEFAULT_BIBLE