diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 6b7b3a99933..32dddfa494d 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -64,3 +64,18 @@ PROCESSING_SUBSYSTEM_DEF(quirks) // Assign wayfinding pinpointer granting quirk if they're new if(cli.get_exp_living(TRUE) < EXP_ASSIGN_WAYFINDER && !user.has_quirk(/datum/quirk/needswayfinder)) user.add_quirk(/datum/quirk/needswayfinder, TRUE) + + + // SKYRAT EDIT ADDITION START - Customization (food prefs) + // This was done in this proc on old skyrat and i cba to find a better way + var/mob/living/carbon/human/H = user + if(istype(H)) + if(cli.prefs.foodlikes.len) + H.dna.species.liked_food = 0 + for(var/V in cli.prefs.foodlikes) + H.dna.species.liked_food |= cli.prefs.foodlikes[V] + if(cli.prefs.fooddislikes.len) + H.dna.species.disliked_food = 0 + for(var/V in cli.prefs.fooddislikes) + H.dna.species.disliked_food |= cli.prefs.fooddislikes[V] + // SKYRAT EDIT ADDITION END diff --git a/modular_skyrat/modules/customization/modules/client/preferences.dm b/modular_skyrat/modules/customization/modules/client/preferences.dm index cc7bcd7e4ed..9ab2ceea735 100644 --- a/modular_skyrat/modules/customization/modules/client/preferences.dm +++ b/modular_skyrat/modules/customization/modules/client/preferences.dm @@ -1,3 +1,22 @@ +// i shall taint your pretty preferences file with bobcode +GLOBAL_LIST_INIT(food, list( + "Meat" = MEAT, + "Vegetables" = VEGETABLES, + "Raw" = RAW, + "Junk Food" = JUNKFOOD, + "Grain" = GRAIN, + "Fruit" = FRUIT, + "Dairy" = DAIRY, + "Fried" = FRIED, + "Alcohol" = ALCOHOL, + "Sugar" = SUGAR, + "Gross" = GROSS, + "Toxic" = TOXIC, + "Pineapple" = PINEAPPLE, + "Breakfast" = BREAKFAST, + "Cloth" = CLOTH + )) + /datum/preferences var/client/parent //doohickeys for savefiles @@ -83,6 +102,10 @@ var/list/features = MANDATORY_FEATURE_LIST var/list/randomise = list(RANDOM_UNDERWEAR = FALSE, RANDOM_UNDERWEAR_COLOR = TRUE, RANDOM_UNDERSHIRT = FALSE, RANDOM_SOCKS = FALSE, RANDOM_BACKPACK = TRUE, RANDOM_JUMPSUIT_STYLE = TRUE, RANDOM_HAIRSTYLE = TRUE, RANDOM_HAIR_COLOR = TRUE, RANDOM_FACIAL_HAIRSTYLE = TRUE, RANDOM_FACIAL_HAIR_COLOR = TRUE, RANDOM_SKIN_TONE = TRUE, RANDOM_EYE_COLOR = TRUE) var/phobia = "spiders" + var/list/foodlikes = list() + var/list/fooddislikes = list() + var/maxlikes = 4 + var/maxdislikes = 6 var/list/custom_names = list() var/preferred_ai_core_display = "Blue" @@ -319,6 +342,12 @@ dat += "
| "
if(is_banned_from(user.ckey, "Appearance"))
@@ -1524,6 +1553,45 @@
SetQuirks(user)
return TRUE
+ else if(href_list["preference"] == "food")
+ switch(href_list["task"])
+ if("close")
+ user << browse(null, "window=mob_occupation")
+ ShowChoices(user)
+ if("update")
+ if(href_list["like"])
+ for(var/F in GLOB.food)
+ if(F == href_list["like"])
+ if(!foodlikes[F])
+ if(foodlikes.len < maxlikes)
+ foodlikes[F] = GLOB.food[F]
+ if(fooddislikes[F])
+ fooddislikes.Remove(F)
+ else
+ foodlikes.Remove(F)
+ if(href_list["dislike"])
+ for(var/F in GLOB.food)
+ if(F == href_list["dislike"])
+ if(!fooddislikes[F])
+ if(fooddislikes.len < maxdislikes)
+ fooddislikes[F] = GLOB.food[F]
+ if(foodlikes[F])
+ foodlikes.Remove(F)
+ else
+ fooddislikes.Remove(F)
+ if(foodlikes.len > maxlikes)
+ foodlikes.Cut(maxlikes+1)
+ if(fooddislikes.len > maxdislikes)
+ foodlikes.Cut(maxdislikes+1)
+ SetFood(user)
+ if("reset")
+ foodlikes = list()
+ fooddislikes = list()
+ SetFood(user)
+ else
+ SetFood(user)
+ return TRUE
+
switch(href_list["task"])
if("augment_style")
needs_update = TRUE
@@ -2841,3 +2909,45 @@
return TRUE
else
return FALSE
+
+// old bobcode copypaste, handle with caution
+/datum/preferences/proc/SetFood(mob/user)
+ var/list/dat = list()
+ dat += " " + dat += " Click on \"like\" to add a food type to your likings. Click on \"dislike\" to add it to your dislikings. " + dat += "Food types cannot be liked and disliked at the same time. " + dat += "If a food type is already liked or disliked, simply click the appropriate button again to remove it from your like or dislike list. " + dat += "Having no food preferences means you'll just default your species' standard instead. " + dat += " " + dat += " " + dat += " " + for(var/F in GLOB.food) + var/likes = FALSE + var/dislikes = FALSE + for(var/food in foodlikes) + if(food == F) + likes = TRUE + for(var/food in fooddislikes) + if(food == F) + dislikes = TRUE + var/font_color = "#8686ff" + if(likes) + dat += " [F]: " + dat += "Like" + dat += "Dislike[F]: " + dat += "Like" + dat += "Dislike[F]: " + dat += "Like" + dat += "DislikeFood 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(FALSE)
diff --git a/modular_skyrat/modules/customization/modules/client/preferences_savefile.dm b/modular_skyrat/modules/customization/modules/client/preferences_savefile.dm
index 4bc8caa63e1..b1fda684284 100644
--- a/modular_skyrat/modules/customization/modules/client/preferences_savefile.dm
+++ b/modular_skyrat/modules/customization/modules/client/preferences_savefile.dm
@@ -487,6 +487,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
READ_FILE(S["socks_color"], socks_color)
socks_color = sanitize_hexcolor(socks_color, 3, 0)
+ READ_FILE(S["foodlikes"], foodlikes)
+ READ_FILE(S["fooddislikes"], fooddislikes)
+
+ foodlikes = SANITIZE_LIST(foodlikes)
+ fooddislikes = SANITIZE_LIST(fooddislikes)
features = SANITIZE_LIST(features)
mutant_bodyparts = SANITIZE_LIST(mutant_bodyparts)
body_markings = SANITIZE_LIST(body_markings)
@@ -603,6 +608,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["scars3"] , scars_list["3"])
WRITE_FILE(S["scars4"] , scars_list["4"])
WRITE_FILE(S["scars5"] , scars_list["5"])
+ WRITE_FILE(S["foodlikes"] , foodlikes)
+ WRITE_FILE(S["fooddislikes"] , fooddislikes)
//Custom names
|