| "
if(jobban_isbanned(user, "appearance"))
@@ -859,72 +859,72 @@ GLOBAL_LIST_EMPTY(preferences_datums)
return job_engsec_low
return 0
-/datum/preferences/proc/SetTraits(mob/user)
- if(!SStraits)
- to_chat(user, "The trait subsystem is still initializing! Try again in a minute.")
+/datum/preferences/proc/SetQuirks(mob/user)
+ if(!SSquirks)
+ to_chat(user, "The quirk subsystem is still initializing! Try again in a minute.")
return
var/list/dat = list()
- if(!SStraits.traits.len)
- dat += "The trait subsystem hasn't finished initializing, please hold..."
+ if(!SSquirks.quirks.len)
+ dat += "The quirk subsystem hasn't finished initializing, please hold..."
dat += " " else - dat += " " - dat += " Left-click to add or remove traits. You need one negative trait for every positive trait. "
+ dat += "\ - Traits are applied at roundstart and cannot normally be removed. " + dat += " Left-click to add or remove quirks. You need negative quirks to have positive ones. "
dat += "\ + Quirks are applied at roundstart and cannot normally be removed. " - dat += " \ - Trait balance remaining: [GetTraitBalance()] " - for(var/V in SStraits.traits) - var/datum/trait/T = SStraits.traits[V] - var/trait_name = initial(T.name) - var/has_trait - var/trait_cost = initial(T.value) * -1 + dat += " \ + Quirk balance remaining: [GetQuirkBalance()] " + for(var/V in SSquirks.quirks) + var/datum/quirk/T = SSquirks.quirks[V] + var/quirk_name = initial(T.name) + var/has_quirk + var/quirk_cost = initial(T.value) * -1 var/lock_reason = "This trait is unavailable." - var/trait_conflict = FALSE - for(var/_V in all_traits) - if(_V == trait_name) - has_trait = TRUE - if(initial(T.mood_trait) && CONFIG_GET(flag/disable_human_mood)) + var/quirk_conflict = FALSE + for(var/_V in all_quirks) + if(_V == quirk_name) + has_quirk = TRUE + if(initial(T.mood_quirk) && CONFIG_GET(flag/disable_human_mood)) lock_reason = "Mood is disabled." - trait_conflict = TRUE - if(has_trait) - if(trait_conflict) - all_traits -= trait_name - has_trait = FALSE + quirk_conflict = TRUE + if(has_quirk) + if(quirk_conflict) + all_quirks -= quirk_name + has_quirk = FALSE else - trait_cost *= -1 //invert it back, since we'd be regaining this amount - if(trait_cost > 0) - trait_cost = "+[trait_cost]" + quirk_cost *= -1 //invert it back, since we'd be regaining this amount + if(quirk_cost > 0) + quirk_cost = "+[quirk_cost]" var/font_color = "#AAAAFF" if(initial(T.value) != 0) font_color = initial(T.value) > 0 ? "#AAFFAA" : "#FFAAAA" - if(trait_conflict) - dat += "[trait_name] - [initial(T.desc)] \ + if(quirk_conflict) + dat += "[quirk_name] - [initial(T.desc)] \ LOCKED: [lock_reason] " else - if(has_trait) - dat += "[trait_name] - [initial(T.desc)] \ - [has_trait ? "Lose" : "Take"] ([trait_cost] pts.) " + if(has_quirk) + dat += "[quirk_name] - [initial(T.desc)] \ + [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.) " else - dat += "[trait_name] - [initial(T.desc)] \ - [has_trait ? "Lose" : "Take"] ([trait_cost] pts.) " + dat += "[quirk_name] - [initial(T.desc)] \ + [has_quirk ? "Lose" : "Take"] ([quirk_cost] pts.) " dat += " Trait Preferences ", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way
+ var/datum/browser/popup = new(user, "mob_occupation", "Quirk Preferences ", 900, 600) //no reason not to reuse the occupation window, as it's cleaner that way
popup.set_window_options("can_close=0")
popup.set_content(dat.Join())
popup.open(0)
return
-/datum/preferences/proc/GetTraitBalance()
+/datum/preferences/proc/GetQuirkBalance()
var/bal = 0
- for(var/V in all_traits)
- var/datum/trait/T = SStraits.traits[V]
+ for(var/V in all_quirks)
+ var/datum/quirk/T = SSquirks.quirks[V]
bal -= initial(T.value)
return bal
@@ -981,55 +981,55 @@ GLOBAL_LIST_EMPTY(preferences_datums)
user << browse(null, "window=mob_occupation")
ShowChoices(user)
if("update")
- var/trait = href_list["trait"]
- if(!SStraits.traits[trait])
+ var/quirk = href_list["trait"]
+ if(!SSquirks.quirks[quirk])
return
- var/value = SStraits.trait_points[trait]
+ var/value = SSquirks.quirk_points[quirk]
if(value == 0)
- if(trait in neutral_traits)
- neutral_traits -= trait
- all_traits -= trait
+ if(quirk in neutral_quirks)
+ neutral_quirks -= quirk
+ all_quirks -= quirk
else
- if(all_traits.len >= MAX_TRAITS)
- to_chat(user, "You can't have more than [MAX_TRAITS] traits!")
+ if(all_quirks.len >= MAX_QUIRKS)
+ to_chat(user, "You can't have more than [MAX_QUIRKS] quirks!")
return
- neutral_traits += trait
- all_traits += trait
+ neutral_quirks += quirk
+ all_quirks += quirk
else
- var/balance = GetTraitBalance()
- if(trait in positive_traits)
- positive_traits -= trait
- all_traits -= trait
- else if(trait in negative_traits)
+ var/balance = GetQuirkBalance()
+ if(quirk in positive_quirks)
+ positive_quirks -= quirk
+ all_quirks -= quirk
+ else if(quirk in negative_quirks)
if(balance + value < 0)
to_chat(user, "Refunding this would cause you to go below your balance!")
return
- negative_traits -= trait
- all_traits -= trait
+ negative_quirks -= quirk
+ all_quirks -= quirk
else if(value > 0)
- if(all_traits.len >= MAX_TRAITS)
- to_chat(user, "You can't have more than [MAX_TRAITS] traits!")
+ if(all_quirks.len >= MAX_QUIRKS)
+ to_chat(user, "You can't have more than [MAX_QUIRKS] quirks!")
return
if(balance - value < 0)
- to_chat(user, "You don't have enough balance to gain this trait!")
+ to_chat(user, "You don't have enough balance to gain this quirk!")
return
- positive_traits += trait
- all_traits += trait
+ positive_quirks += quirk
+ all_quirks += quirk
else
- if(all_traits.len >= MAX_TRAITS)
- to_chat(user, "You can't have more than [MAX_TRAITS] traits!")
+ if(all_quirks.len >= MAX_QUIRKS)
+ to_chat(user, "You can't have more than [MAX_QUIRKS] quirks!")
return
- negative_traits += trait
- all_traits += trait
- SetTraits(user)
+ negative_quirks += quirk
+ all_quirks += quirk
+ SetQuirks(user)
if("reset")
- all_traits = list()
- positive_traits = list()
- negative_traits = list()
- neutral_traits = list()
- SetTraits(user)
+ all_quirks = list()
+ positive_quirks = list()
+ negative_quirks = list()
+ neutral_quirks = list()
+ SetQuirks(user)
else
- SetTraits(user)
+ SetQuirks(user)
return TRUE
switch(href_list["task"])
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 53f8161a60..f17ddf8b7c 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -313,11 +313,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["job_engsec_med"] >> job_engsec_med
S["job_engsec_low"] >> job_engsec_low
- //Traits
- S["all_traits"] >> all_traits
- S["positive_traits"] >> positive_traits
- S["negative_traits"] >> negative_traits
- S["neutral_traits"] >> neutral_traits
+ //Quirks
+ S["all_quirks"] >> all_quirks
+ S["positive_quirks"] >> positive_quirks
+ S["negative_quirks"] >> negative_quirks
+ S["neutral_quirks"] >> neutral_quirks
//Citadel code
S["feature_genitals_use_skintone"] >> features["genitals_use_skintone"]
@@ -424,10 +424,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
job_engsec_med = sanitize_integer(job_engsec_med, 0, 65535, initial(job_engsec_med))
job_engsec_low = sanitize_integer(job_engsec_low, 0, 65535, initial(job_engsec_low))
- all_traits = SANITIZE_LIST(all_traits)
- positive_traits = SANITIZE_LIST(positive_traits)
- negative_traits = SANITIZE_LIST(negative_traits)
- neutral_traits = SANITIZE_LIST(neutral_traits)
+ all_quirks = SANITIZE_LIST(all_quirks)
+ positive_quirks = SANITIZE_LIST(positive_quirks)
+ negative_quirks = SANITIZE_LIST(negative_quirks)
+ neutral_quirks = SANITIZE_LIST(neutral_quirks)
cit_character_pref_load(S)
@@ -494,11 +494,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["job_engsec_med"] , job_engsec_med)
WRITE_FILE(S["job_engsec_low"] , job_engsec_low)
- //Traits
- WRITE_FILE(S["all_traits"] , all_traits)
- WRITE_FILE(S["positive_traits"] , positive_traits)
- WRITE_FILE(S["negative_traits"] , negative_traits)
- WRITE_FILE(S["neutral_traits"] , neutral_traits)
+ //Quirks
+ WRITE_FILE(S["all_quirks"] , all_quirks)
+ WRITE_FILE(S["positive_quirks"] , positive_quirks)
+ WRITE_FILE(S["negative_quirks"] , negative_quirks)
+ WRITE_FILE(S["neutral_quirks"] , neutral_quirks)
cit_character_pref_save(S)
diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm
index 9eaa8747b9..55c0da91f2 100644
--- a/code/modules/hydroponics/grown/replicapod.dm
+++ b/code/modules/hydroponics/grown/replicapod.dm
@@ -22,7 +22,7 @@
var/blood_type = null
var/list/features = null
var/factions = null
- var/list/traits = null
+ var/list/quirks = null
var/contains_sample = 0
/obj/item/seeds/replicapod/Initialize()
@@ -42,7 +42,7 @@
blood_type = B.data["blood_type"]
features = B.data["features"]
factions = B.data["factions"]
- factions = B.data["traits"]
+ factions = B.data["quirks"]
contains_sample = TRUE
visible_message("The [src] is injected with a fresh blood sample.")
else
@@ -114,7 +114,7 @@
podman.faction |= factions
if(!features["mcolor"])
features["mcolor"] = "#59CE00"
- for(var/V in traits)
+ for(var/V in quirks)
new V(podman)
podman.hardset_dna(null,null,podman.real_name,blood_type, new /datum/species/pod,features)//Discard SE's and UI's, podman cloning is inaccurate, and always make them a podman
podman.set_cloned_appearance()
diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm
index 01ac36c57a..c6cc8a70ac 100644
--- a/code/modules/mob/dead/new_player/new_player.dm
+++ b/code/modules/mob/dead/new_player/new_player.dm
@@ -400,7 +400,7 @@
SSticker.mode.make_antag_chance(humanc)
if(humanc && CONFIG_GET(flag/roundstart_traits))
- SStraits.AssignTraits(humanc, humanc.client, TRUE)
+ SSquirks.AssignQuirks(humanc, humanc.client, TRUE)
log_manifest(character.mind.key,character.mind,character,latejoin = TRUE)
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index 68c6ed5c83..05a14ef3b1 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -193,10 +193,10 @@
blood_data["real_name"] = real_name
blood_data["features"] = dna.features
blood_data["factions"] = faction
- blood_data["traits"] = list()
- for(var/V in roundstart_traits)
- var/datum/trait/T = V
- blood_data["traits"] += T.type
+ blood_data["quirks"] = list()
+ for(var/V in roundstart_quirks)
+ var/datum/quirk/T = V
+ blood_data["quirks"] += T.type
return blood_data
//get the id of the substance this mob use as blood.
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 050a4f6d09..6cbbd69b4b 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -733,8 +733,8 @@
if(0 to NUTRITION_LEVEL_STARVING)
to_chat(src, "You're starving!")
- if(roundstart_traits.len)
- to_chat(src, "You have these traits: [get_trait_string()].")
+ if(roundstart_quirks.len)
+ to_chat(src, "You have these quirks: [get_trait_string()].")
else
if(wear_suit)
wear_suit.add_fingerprint(M)
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 6dfaa565fa..94b1e64f39 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -34,7 +34,7 @@
var/list/status_traits = list()
- var/list/roundstart_traits = list()
+ var/list/roundstart_quirks = list()
var/list/surgeries = list() //a list of surgery datums. generally empty, they're added when the player wants them.
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index 106381bade..0a0f27f123 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -146,12 +146,12 @@
else
status_traits[trait] |= list(source)
-/mob/living/proc/add_trait_datum(trait, spawn_effects) //separate proc due to the way these ones are handled
- if(has_trait(trait))
+/mob/living/proc/add_quirk(quirk, spawn_effects) //separate proc due to the way these ones are handled
+ if(has_trait(quirk))
return
- if(!SStraits || !SStraits.traits[trait])
+ if(!SSquirks || !SSquirks.quirks[quirk])
return
- var/datum/trait/T = SStraits.traits[trait]
+ var/datum/quirk/T = SSquirks.quirks[quirk]
new T (src, spawn_effects)
return TRUE
@@ -180,8 +180,8 @@
if(!LAZYLEN(status_traits[trait]))
status_traits -= trait
-/mob/living/proc/remove_trait_datum(trait)
- var/datum/trait/T = roundstart_traits[trait]
+/mob/living/proc/remove_quirk(quirk)
+ var/datum/quirk/T = roundstart_quirks[quirk]
if(T)
qdel(T)
return TRUE
@@ -201,8 +201,8 @@
else if(LAZYLEN(status_traits[trait]))
return TRUE
-/mob/living/proc/has_trait_datum(trait)
- return roundstart_traits[trait]
+/mob/living/proc/has_quirk(quirk)
+ return roundstart_quirks[quirk]
/mob/living/proc/remove_all_traits()
status_traits = list()
diff --git a/config/game_options.txt b/config/game_options.txt
index 5f080a7f0f..6ecec1fc9e 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -536,7 +536,8 @@ ALLOW_MISCREANTS
## Determines if players are allowed to print integrated circuits, uncomment to allow.
#IC_PRINTING
-## Uncomment to allow roundstart trait selection in the character setup menu.
+## Uncomment to allow roundstart quirk selection in the character setup menu.
+## This used to be named traits, hence the config name, but it handles quirks, not the other kind of trait!
ROUNDSTART_TRAITS
## Uncomment to disable human moods.
diff --git a/modular_citadel/code/datums/traits/neutral.dm b/modular_citadel/code/datums/traits/neutral.dm
index 2bb9c3a356..264dbfef0a 100644
--- a/modular_citadel/code/datums/traits/neutral.dm
+++ b/modular_citadel/code/datums/traits/neutral.dm
@@ -1,24 +1,24 @@
// Citadel-specific Neutral Traits
-/datum/trait/libido
+/datum/quirk/libido
name = "Nymphomania"
desc = "You're always feeling a bit in heat. Also, you get aroused faster than usual."
value = 0
gain_text = "You are feeling extra wild."
lose_text = "You don't feel that burning sensation anymore."
-/datum/trait/libido/add()
- var/mob/living/M = trait_holder
+/datum/quirk/libido/add()
+ var/mob/living/M = quirk_holder
M.min_arousal = 16
M.arousal_rate = 3
-/datum/trait/libido/remove()
- var/mob/living/M = trait_holder
+/datum/quirk/libido/remove()
+ var/mob/living/M = quirk_holder
M.min_arousal = initial(M.min_arousal)
M.arousal_rate = initial(M.arousal_rate)
-/datum/trait/libido/on_process()
- var/mob/living/M = trait_holder
+/datum/quirk/libido/on_process()
+ var/mob/living/M = quirk_holder
if(M.canbearoused == FALSE)
- to_chat(trait_holder, "Having high libido is useless when you can't feel arousal at all!")
+ to_chat(quirk_holder, "Having high libido is useless when you can't feel arousal at all!")
qdel(src)
diff --git a/tgstation.dme b/tgstation.dme
index d768813899..d356f887a4 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -261,7 +261,7 @@
#include "code\controllers\subsystem\processing\obj.dm"
#include "code\controllers\subsystem\processing\processing.dm"
#include "code\controllers\subsystem\processing\projectiles.dm"
-#include "code\controllers\subsystem\processing\traits.dm"
+#include "code\controllers\subsystem\processing\quirks.dm"
#include "code\controllers\subsystem\processing\wet_floors.dm"
#include "code\datums\action.dm"
#include "code\datums\ai_laws.dm"
@@ -445,7 +445,7 @@
#include "code\datums\status_effects\gas.dm"
#include "code\datums\status_effects\neutral.dm"
#include "code\datums\status_effects\status_effect.dm"
-#include "code\datums\traits\_trait.dm"
+#include "code\datums\traits\_quirk.dm"
#include "code\datums\traits\good.dm"
#include "code\datums\traits\negative.dm"
#include "code\datums\traits\neutral.dm"
|