diff --git a/code/controllers/subsystem/processing/traits.dm b/code/controllers/subsystem/processing/traits.dm index 17eae4bda2..8e31260d94 100644 --- a/code/controllers/subsystem/processing/traits.dm +++ b/code/controllers/subsystem/processing/traits.dm @@ -26,10 +26,12 @@ PROCESSING_SUBSYSTEM_DEF(traits) /datum/controller/subsystem/processing/traits/proc/AssignTraits(mob/living/user, client/cli, spawn_effects) GenerateTraits(cli) - for(var/V in cli.prefs.character_traits) - user.add_trait_datum(V, spawn_effects) + if(user && cli && cli.prefs.character_traits) + for(var/V in cli.prefs.character_traits) + user.add_trait_datum(V, spawn_effects) /datum/controller/subsystem/processing/traits/proc/GenerateTraits(client/user) - if(user.prefs.character_traits.len) - return - user.prefs.character_traits = user.prefs.all_traits + if(user && user.prefs && user.prefs.character_traits) + if(user.prefs.character_traits.len) + return + user.prefs.character_traits = user.prefs.all_traits diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index dfc39a9f28..4235f3e37e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -992,15 +992,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) return 1 else if(href_list["preference"] == "trait") - if(SSticker.HasRoundStarted() && !isnewplayer(user)) - to_chat(user, "The round has already started. Please wait until next round to set up your traits!") - return switch(href_list["task"]) if("close") user << browse(null, "window=mob_occupation") ShowChoices(user) if("update") var/trait = href_list["trait"] + if(!SStraits.traits[trait]) + return var/value = SStraits.trait_points[trait] if(value == 0) if(trait in neutral_traits) @@ -1926,6 +1925,3 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.update_hair() character.update_body_parts() character.update_genitals() - - if(CONFIG_GET(flag/roundstart_traits)) - SStraits.AssignTraits(character, parent)