mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-23 13:10:02 +01:00
[SEMI-MODULAR] Ports the old food like/dislike system (#2092)
* added: bobjoga code * the numbers Co-authored-by: Ranged <nickvanderkroon@gmail.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 += "<center><h2>Quirk Setup</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=trait;task=menu'>Configure Quirks</a><br></center>"
|
||||
dat += "<center><b>Current Quirks:</b> [all_quirks.len ? all_quirks.Join(", ") : "None"]</center>"
|
||||
|
||||
dat += "<center><h2>Food Setup</h2>"
|
||||
dat += "<a href='?_src_=prefs;preference=food;task=menu'>Configure Foods</a></center>"
|
||||
dat += "<center><b>Current Likings:</b> [foodlikes.len ? foodlikes.Join(", ") : "None"]</center>"
|
||||
dat += "<center><b>Current Dislikings:</b> [fooddislikes.len ? fooddislikes.Join(", ") : "None"]</center>"
|
||||
|
||||
dat += "<h2>Identity</h2>"
|
||||
dat += "<table width='100%'><tr><td width='75%' valign='top'>"
|
||||
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 += "<center><b>Choose food setup</b></center><br>"
|
||||
dat += "<div align='center'>Click on \"like\" to add a food type to your likings. Click on \"dislike\" to add it to your dislikings.<br>"
|
||||
dat += "Food types cannot be liked and disliked at the same time.<br>"
|
||||
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.<br>"
|
||||
dat += "Having no food preferences means you'll just default your species' standard instead.</div><br>"
|
||||
dat += "<center><a href='?_src_=prefs;preference=food;task=close'>Done</a></center>"
|
||||
dat += "<hr>"
|
||||
dat += "<center><b>Current Likings:</b> [foodlikes.len ? foodlikes.Join(", ") : "None"] ([foodlikes.len]/[maxlikes])</center><br>"
|
||||
dat += "<center><b>Current Dislikings:</b> [fooddislikes.len ? fooddislikes.Join(", ") : "None"] ([fooddislikes.len]/[maxdislikes])</center>"
|
||||
dat += "<hr>"
|
||||
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 += "<center><p style='color: [font_color];'><b>[F]: </p></b>"
|
||||
dat += "<a style='background-color: #32c232;' href='?_src_=prefs;preference=food;task=update;like=[F]'>Like</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=food;task=update;dislike=[F]'>Dislike</a></center>"
|
||||
else if(dislikes)
|
||||
dat += "<center><p style='color: [font_color];'><b>[F]: </p></b>"
|
||||
dat += "<a href='?_src_=prefs;preference=food;task=update;like=[F]'>Like</a>"
|
||||
dat += "<a style='background-color: #ff1a1a;' href='?_src_=prefs;preference=food;task=update;dislike=[F]'>Dislike</a></center>"
|
||||
else
|
||||
dat += "<center><p style='color: [font_color];'><b>[F]: </p></b>"
|
||||
dat += "<a href='?_src_=prefs;preference=food;task=update;like=[F]'>Like</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=food;task=update;dislike=[F]'>Dislike</a></center>"
|
||||
dat += "<br><center><a href='?_src_=prefs;preference=food;task=reset'>Reset Food Preferences</a></center>"
|
||||
|
||||
var/datum/browser/popup = new(user, "mob_occupation", "<div align='center'>Food Preferences</div>", 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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user