Merge branch 'bluespace_belts_changes' of https://github.com/Phantastic-Swan/GS13-Citadel into bluespace_belts_changes

This commit is contained in:
Phantastic-Swan
2025-04-28 15:26:46 +02:00
43 changed files with 501 additions and 33 deletions
+14
View File
@@ -261,6 +261,8 @@
give_genital(/obj/item/organ/genital/butt)
if(dna.features["has_belly"])
give_genital(/obj/item/organ/genital/belly)
if(dna.features["has_taur_belly"]) //GS13 EDIT TAUR BELLY
give_genital(/obj/item/organ/genital/taur_belly)
/mob/living/carbon/human/proc/give_genital(obj/item/organ/genital/G)
if(!dna || (NOGENITALS in dna.species.species_traits) || getorganslot(initial(G.slot)))
@@ -322,6 +324,8 @@
S = GLOB.butt_shapes_list[G.shape]
if(/obj/item/organ/genital/belly)
S = GLOB.belly_shapes_list[G.shape]
if(/obj/item/organ/genital/taur_belly) //GS13 EDIT TAUR BELLY
S = GLOB.taur_belly_shapes_list[G.shape]
if(!S || S.icon_state == "none")
continue
@@ -358,6 +362,8 @@
genital_overlay.color = "#[dna.features["butt_color"]]"
if("belly_color")
genital_overlay.color = "#[dna.features["belly_color"]]"
if("taur_belly_color") //GS13 EDIT TAUR BELLY
genital_overlay.color = "#[dna.features["taur_belly_color"]]"
//GS13 - Because each genital's file has different naming schemes for their icon_states,
// I've made it so each type is checked and the icon_state built based on which genital it is
@@ -365,6 +371,9 @@
if("belly")
genital_overlay.icon = G.icon
genital_overlay.icon_state = "[G.icon_state]_[aroused_state]_[layertext]"
if("taur_belly") //GS13 EDIT TAUR BELLY
//genital_overlay.icon = G.icon
genital_overlay.icon_state = "[G.icon_state]_[aroused_state]_[layertext]"
if("breasts")
genital_overlay.icon_state = "[G.slot]_[S.icon_state]_[size][(dna.species.use_skintones && !dna.skin_tone_override) ? "-s" : ""]_[aroused_state]_[layertext]"
if("penis")
@@ -405,6 +414,7 @@
var/buttCheck = getorganslot(ORGAN_SLOT_BUTT)
var/ballCheck = getorganslot(ORGAN_SLOT_TESTICLES)
var/bellyCheck = getorganslot(ORGAN_SLOT_BELLY)
var/taurbellyCheck = getorganslot(ORGAN_SLOT_TAUR_BELLY) //GS13 EDIT TAUR BELLY
if(organCheck == FALSE)
if(ishuman(src) && dna.species.use_skintones)
@@ -415,6 +425,7 @@
dna.features["butt_color"] = "[dna.species.fixed_mut_color]"
dna.features["belly_color"] = "[dna.species.fixed_mut_color]"
dna.features["testicles_color"] = "[dna.species.fixed_mut_color]"
dna.features["taur_belly_color"] = "[dna.species.fixed_mut_color]" //GS13 EDIT TAUR BELLY
return
//So people who haven't set stuff up don't get rainbow surprises.
dna.features["cock_color"] = "[dna.features["mcolor"]]"
@@ -422,6 +433,7 @@
dna.features["butt_color"] = "[dna.features["mcolor"]]"
dna.features["belly_color"] = "[dna.features["mcolor"]]"
dna.features["testicles_color"] = "[dna.features["mcolor"]]"
dna.features["taur_belly_color"] = "[dna.features["mcolor"]]" //GS13 EDIT TAUR BELLY
else //If there's a new organ, make it the same colour.
if(breastCheck == FALSE)
dna.features["breasts_color"] = dna.features["cock_color"]
@@ -433,4 +445,6 @@
dna.features["belly_color"] = dna.features["belly_color"]
else if (ballCheck == FALSE)
dna.features["testicles_color"] = dna.features["testicles_color"]
else if (taurbellyCheck == FALSE)
dna.features["taur_belly_color"] = dna.features["taur_belly_color"] //GS13 EDIT TAUR BELLY
return TRUE
@@ -152,3 +152,19 @@
icon = 'hyperstation/icons/obj/genitals/belly_round.dmi'
icon_state = "round"
name = "Round Belly"
//GS13 EDIT TAUR BELLY
/datum/sprite_accessory/taur_belly // Generic taur belly
icon = 'GainStation13/icons/obj/genitals/taur_belly/taur_belly_drake.dmi'
icon_state = "drake"
name = "generic taur belly"
color_src = "taur_belly_color"
//taur_dimension_x = 64
feat_taur = "belly_taur"
center = TRUE
dimension_x = 64
/datum/sprite_accessory/taur_belly/drake
taur_icon = 'GainStation13/icons/obj/genitals/taur_belly/taur_belly_drake.dmi'
icon_state = "drake"
name = "Drake Belly"
+60 -3
View File
@@ -134,7 +134,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/eye_type = DEFAULT_EYES_TYPE //Eye type
var/split_eye_colors = FALSE
var/datum/species/pref_species = new /datum/species/human() //Mutant race
var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = list(), "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_fluid" = /datum/reagent/consumable/milk, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "has_butt" = FALSE, "butt_color" = "ffffff", "butt_size" = BUTT_SIZE_DEF, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "butt_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING, "belly_size" = BELLY_SIZE_DEF, "belly_shape" = DEF_BELLY_SHAPE, "inflatable_belly" = FALSE, "belly_visibility" = GEN_VISIBLE_NO_UNDIES)
var/list/features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = list(), "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_fluid" = /datum/reagent/consumable/milk, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "has_butt" = FALSE, "butt_color" = "ffffff", "butt_size" = BUTT_SIZE_DEF, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "butt_visibility" = GEN_VISIBLE_NO_UNDIES, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING, "belly_size" = BELLY_SIZE_DEF, "belly_shape" = DEF_BELLY_SHAPE, "inflatable_belly" = FALSE, "belly_visibility" = GEN_VISIBLE_NO_UNDIES, "taur_belly_size" = TAUR_BELLY_SIZE_DEF, "taur_belly_shape" = TAUR_BELLY_SHAPE_DEF, "taur_inflatable_belly" = FALSE, "taur_belly_visibility" = GEN_VISIBLE_NO_UNDIES)
var/custom_speech_verb = "default" //if your say_mod is to be something other than your races
var/custom_tongue = "default" //if your tongue is to be something other than your races
@@ -871,10 +871,27 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Belly Visibility:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=belly_visibility;task=input'>[features["belly_visibility"]]</a>"
// GS13: tweak inflation description
dat += "<b>Inflation (climax with and manual belly size change in arousal menu):</b><a style='display:block;width:50px' href='?_src_=prefs;preference=inflatable_belly'>[features["inflatable_belly"] == 1 ? "Yes" : "No"]</a>"
dat += "</td>"
dat += "</tr></table>"
// GS13 EDIT TAUR BELLY START
if(features["taur"] != "None")
dat += APPEARANCE_CATEGORY_COLUMN
dat += "<h3>Taur Belly</h3>"
dat += "<a style='display:block;width:50px' href='?_src_=prefs;preference=has_taur_belly'>[features["has_taur_belly"] == TRUE ? "Yes" : "No"]</a>"
if(features["has_taur_belly"])
dat += "<b>Color:</b></a><BR>"
if(pref_species.use_skintones && features["genitals_use_skintone"] == TRUE)
dat += "<span style='border: 1px solid #161616; background-color: [SKINTONE2HEX(skin_tone)];'><font color='[color_hex2num(SKINTONE2HEX(skin_tone)) < 200 ? "FFFFFF" : "000000"]'>[SKINTONE2HEX(skin_tone)]</font></span>(Skin tone overriding)<br>"
else
dat += "<span style='border: 1px solid #161616; background-color: #[features["taur_belly_color"]];'><font color='[color_hex2num(features["taur_belly_color"]) < 200 ? "FFFFFF" : "000000"]'>#[features["taur_belly_color"]]</font></span> <a href='?_src_=prefs;preference=taur_belly_color;task=input'>Change</a><br>"
dat += "<b>Belly Size:</b> <a style='display:block;width:120px' href='?_src_=prefs;preference=taur_belly_size;task=input'>[features["taur_belly_size"]]</a>"
dat += "<b>Max Fat Belly Size:</b> <a style='display:block;width:120px' href='?_src_=prefs;preference=max_taur_belly_size;task=input'>[features["max_taur_belly_size"]]</a>"
dat += "<b>Belly Shape:</b> <a style='display:block;width:120px' href='?_src_=prefs;preference=taur_belly_shape;task=input'>[features["taur_belly_shape"]]</a>"
dat += "<b>Belly Visibility:</b><a style='display:block;width:100px' href='?_src_=prefs;preference=taur_belly_visibility;task=input'>[features["taur_belly_visibility"]]</a>"
dat += "<b>Inflation (climax with and manual belly size change in arousal menu):</b><a style='display:block;width:50px' href='?_src_=prefs;preference=taur_inflatable_belly'>[features["taur_inflatable_belly"] == 1 ? "Yes" : "No"]</a>"
dat += "</td>"
dat += "</tr></table>"
//Markings
if(MARKINGS_CHAR_TAB)
@@ -2547,6 +2564,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["tail_human"] = "None"
features["tail_lizard"] = "None"
features["arachnid_spinneret"] = "None"
else
features["has_taur_belly"] = FALSE
if("ears")
var/list/snowflake_ears_list = list()
@@ -2843,7 +2862,40 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/n_vis = input(user, "Belly Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["belly_visibility"] = n_vis
//GS13 TAUR BELLY START
if("taur_belly_color")
var/new_bellycolor = input(user, "Belly Color:", "Character Preference", "#"+features["taur_belly_color"]) as color|null
if(new_bellycolor)
var/temp_hsv = RGBtoHSV(new_bellycolor)
if(new_bellycolor == "#000000")
features["taur_belly_color"] = pref_species.default_color
else if((MUTCOLORS_PARTSONLY in pref_species.species_traits) || ReadHSV(temp_hsv)[3] >= ReadHSV("#202020")[3])
features["taur_belly_color"] = sanitize_hexcolor(new_bellycolor, 6)
else
to_chat(user,"<span class='danger'>Invalid color. Your color is not bright enough.</span>")
if("taur_belly_size") //GS13 Edit here if we add more belly sprites
// GS13: Adjust sprite ranges in char setup
var/new_bellysize = input(user, "Belly size :\n(1-10)", "Character Preference") as num|null
if(new_bellysize)
features["taur_belly_size"] = clamp(round(new_bellysize), 1, 10)
if("max_taur_belly_size")
var/new_bellymax = input(user, "Max belly fat size :\n(0-9)", "Character Preference") as num|null
if(new_bellymax)
features["max_taur_belly_size"] = clamp(round(new_bellymax), 0, 10)
if("taur_belly_shape") //GS13 - belly shapes
var/new_shape
new_shape = input(user, "Belly Type", "Character Preference") as null|anything in GLOB.taur_belly_shapes_list
if(new_shape)
features["taur_belly_shape"] = new_shape
if("taur_belly_visibility")
var/n_vis = input(user, "Belly Visibility", "Character Preference") as null|anything in CONFIG_GET(str_list/safe_visibility_toggles)
if(n_vis)
features["taur_belly_visibility"] = n_vis
//GS13 TAUR BELLY END
if("ooccolor")
var/new_ooccolor = input(user, "Choose your OOC colour:", "Game Preference",ooccolor) as color|null
@@ -3160,6 +3212,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
features["has_belly"] = !features["has_belly"]
if("inflatable_belly")
features["inflatable_belly"] = !features["inflatable_belly"]
//GS13 TAUR BELLY EDIT
if("has_taur_belly")
features["has_taur_belly"] = !features["has_taur_belly"]
if("taur_inflatable_belly")
features["taur_inflatable_belly"] = !features["taur_inflatable_belly"]
if("widescreenpref")
widescreenpref = !widescreenpref
user.client.view_size.setDefault(getScreenSize(widescreenpref))
+26 -1
View File
@@ -704,7 +704,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
var/savefile/S = new /savefile(path)
if(!S)
return FALSE
features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "has_butt" = FALSE, "butt_color" = "ffffff", "butt_size" = BUTT_SIZE_DEF, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "butt_visibility" = GEN_VISIBLE_NO_UNDIES, "belly_visibility" = GEN_VISIBLE_NO_UNDIES, "belly_size" = BELLY_SIZE_DEF, "belly_shape" = DEF_BELLY_SHAPE, "inflatable_belly" = FALSE, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING)
features = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF", "mcolor3" = "FFFFFF", "tail_lizard" = "Smooth", "tail_human" = "None", "snout" = "Round", "horns" = "None", "horns_color" = "85615a", "ears" = "None", "wings" = "None", "wings_color" = "FFF", "frills" = "None", "deco_wings" = "None", "spines" = "None", "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", "insect_markings" = "None", "arachnid_legs" = "Plain", "arachnid_spinneret" = "Plain", "arachnid_mandibles" = "Plain", "mam_body_markings" = "Plain", "mam_ears" = "None", "mam_snouts" = "None", "mam_tail" = "None", "mam_tail_animated" = "None", "xenodorsal" = "Standard", "xenohead" = "Standard", "xenotail" = "Xenomorph Tail", "taur" = "None", "genitals_use_skintone" = FALSE, "has_cock" = FALSE, "cock_shape" = DEF_COCK_SHAPE, "cock_length" = COCK_SIZE_DEF, "cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF, "cock_color" = "ffffff", "cock_taur" = FALSE, "has_balls" = FALSE, "balls_color" = "ffffff", "balls_shape" = DEF_BALLS_SHAPE, "balls_size" = BALLS_SIZE_DEF, "balls_cum_rate" = CUM_RATE, "balls_cum_mult" = CUM_RATE_MULT, "balls_efficiency" = CUM_EFFICIENCY, "has_breasts" = FALSE, "breasts_color" = "ffffff", "breasts_size" = BREASTS_SIZE_DEF, "breasts_shape" = DEF_BREASTS_SHAPE, "breasts_producing" = FALSE, "has_vag" = FALSE, "vag_shape" = DEF_VAGINA_SHAPE, "vag_color" = "ffffff", "has_womb" = FALSE, "has_butt" = FALSE, "butt_color" = "ffffff", "butt_size" = BUTT_SIZE_DEF, "balls_visibility" = GEN_VISIBLE_NO_UNDIES, "breasts_visibility"= GEN_VISIBLE_NO_UNDIES, "cock_visibility" = GEN_VISIBLE_NO_UNDIES, "vag_visibility" = GEN_VISIBLE_NO_UNDIES, "butt_visibility" = GEN_VISIBLE_NO_UNDIES, "belly_visibility" = GEN_VISIBLE_NO_UNDIES, "belly_size" = BELLY_SIZE_DEF, "belly_shape" = DEF_BELLY_SHAPE, "inflatable_belly" = FALSE, "ipc_screen" = "Sunburst", "ipc_antenna" = "None", "flavor_text" = "", "silicon_flavor_text" = "", "ooc_notes" = "", "meat_type" = "Mammalian", "body_model" = MALE, "body_size" = RESIZE_DEFAULT_SIZE, "color_scheme" = OLD_CHARACTER_COLORING, "taur_belly_size" = TAUR_BELLY_SIZE_DEF, "taur_belly_shape" = TAUR_BELLY_SHAPE_DEF, "taur_inflatable_belly" = FALSE, "taur_belly_visibility" = GEN_VISIBLE_NO_UNDIES)
S.cd = "/"
if(!slot)
@@ -901,6 +901,16 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["feature_hide_belly"] >> features["hide_belly"]
S["feature_inflatable_belly"] >> features["inflatable_belly"]
//GS13 EDIT TAUR BELLY features
S["feature_has_taur_belly"] >> features["has_taur_belly"]
S["feature_taur_belly_size"] >> features["taur_belly_size"]
S["feature_max_taur_belly_size"] >> features["max_taur_belly_size"]
S["feature_taur_belly_shape"] >> features["taur_belly_shape"]
S["feature_taur_belly_color"] >> features["taur_belly_color"]
S["feature_hide_taur_belly"] >> features["hide_taur_belly"]
S["feature_taur_inflatable_belly"] >> features["taur_inflatable_belly"]
S["feature_taur_belly_visibility"] >> features["feature_taur_belly_visibility"]
// Flavor texts, Made into a standard.
S["feature_flavor_text"] >> features["flavor_text"]
S["feature_silicon_flavor_text"] >> features["silicon_flavor_text"]
@@ -1087,6 +1097,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
features["butt_visibility"] = sanitize_inlist(features["butt_visibility"], safe_visibilities, GEN_VISIBLE_NO_UNDIES)
features["belly_visibility"] = sanitize_inlist(features["belly_visibility"], safe_visibilities, GEN_VISIBLE_NO_UNDIES)
//GS13 TAUR BELLY EDIT START
features["taur_belly_shape"] = sanitize_inlist(features["taur_belly_shape"], GLOB.taur_belly_shapes_list, TAUR_BELLY_SHAPE_DEF)
features["taur_belly_visibility"] = sanitize_inlist(features["taur_belly_visibility"], safe_visibilities, GEN_VISIBLE_NO_UNDIES)
//GS13 TAUR BELLY EDIT END
custom_speech_verb = sanitize_inlist(custom_speech_verb, GLOB.speech_verbs, "default")
custom_tongue = sanitize_inlist(custom_tongue, GLOB.roundstart_tongues, "default")
additional_language = sanitize_inlist(additional_language, GLOB.roundstart_languages, "None")
@@ -1326,6 +1341,16 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["feature_inflatable_belly"], features["inflatable_belly"])
WRITE_FILE(S["alt_titles_preferences"], alt_titles_preferences)
//GS13 TAUR BELLY EDIT START
WRITE_FILE(S["feature_has_taur_belly"], features["has_taur_belly"])
WRITE_FILE(S["feature_taur_belly_size"], features["taur_belly_size"])
WRITE_FILE(S["feature_max_taur_belly_size"], features["max_taur_belly_size"])
WRITE_FILE(S["feature_taur_belly_shape"], features["taur_belly_shape"])
WRITE_FILE(S["feature_taur_belly_color"], features["taur_belly_color"])
WRITE_FILE(S["feature_hide_taur_belly"], features["hide_taur_belly"])
WRITE_FILE(S["feature_taur_inflatable_belly"], features["taur_inflatable_belly"])
//GS13 TAUR BELLY EDIT START END
WRITE_FILE(S["feature_ooc_notes"], features["ooc_notes"])
WRITE_FILE(S["feature_color_scheme"], features["color_scheme"])
@@ -20,7 +20,7 @@
jobs_to_revolt = list("Assistant")
nation_name = pick("Assa", "Mainte", "Tunnel", "Gris", "Grey", "Liath", "Grigio", "Ass", "Assi")
if("white")
jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Paramedic", "Virologist")
jobs_to_revolt = list("Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Paramedic", "Psychologist", "Virologist") //GS13 edit: Psychologist job
nation_name = pick("Mede", "Healtha", "Recova", "Chemi", "Geneti", "Viro", "Psych")
if("yellow")
jobs_to_revolt = list("Chief Engineer", "Station Engineer", "Atmospheric Technician")
+6 -4
View File
@@ -134,7 +134,7 @@
ACCESS_HYDROPONICS, ACCESS_LIBRARY, ACCESS_LAWYER, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_QM, ACCESS_SURGERY,
ACCESS_THEATRE, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_MAILSORTING, ACCESS_WEAPONS,
ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_XENOBIOLOGY, ACCESS_CE, ACCESS_HOP, ACCESS_HOS, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING)
ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_MINISAT, ACCESS_NETWORK, ACCESS_CLONING, ACCESS_PSYCH) //GS13: Psychologist job
/proc/get_all_centcom_access()
return list(ACCESS_CENT_GENERAL, ACCESS_CENT_THUNDER, ACCESS_CENT_SPECOPS, ACCESS_CENT_MEDICAL, ACCESS_CENT_LIVING, ACCESS_CENT_STORAGE, ACCESS_CENT_TELEPORTER, ACCESS_CENT_CAPTAIN)
@@ -162,7 +162,7 @@
if(2) //security
return list(ACCESS_SEC_DOORS, ACCESS_WEAPONS, ACCESS_SECURITY, ACCESS_BRIG, ACCESS_ARMORY, ACCESS_FORENSICS_LOCKERS, ACCESS_COURT, ACCESS_HOS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP,)
if(3) //medbay
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO)
return list(ACCESS_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_SURGERY, ACCESS_CMO, ACCESS_PSYCH) //GS13: Psychologist job
if(4) //research
return list(ACCESS_RESEARCH, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_GENETICS, ACCESS_ROBOTICS, ACCESS_XENOBIOLOGY, ACCESS_MINISAT, ACCESS_RD, ACCESS_NETWORK)
if(5) //engineering and maintenance
@@ -329,6 +329,8 @@
return "Network Access"
if(ACCESS_CLONING)
return "Cloning Room"
if(ACCESS_PSYCH)
return "Psychology Office" //GS13: Psychologist job
/proc/get_centcom_access_desc(A)
switch(A)
@@ -354,8 +356,8 @@
/proc/get_all_jobs()
return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician",
"Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Engineering Intern",
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Medical Resident",
"Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Security Cadet", "Prisoner") //Rookie roles
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Psychologist", "Medical Resident",
"Research Director", "Scientist", "Roboticist", "Research Student", "Head of Security", "Warden", "Detective", "Security Officer", "Security Cadet", "Prisoner") //Rookie + Psychologist roles
/proc/get_all_job_icons() //For all existing HUD icons
return get_all_jobs() + list("Prisoner")
+3
View File
@@ -76,6 +76,9 @@
/datum/job/paramedic
alt_titles = list ("Emergency Medical Technician", "Search and Rescue Technician", "Trauma Team Responder")
/datum/job/psychologist
alt_titles = list("Therapist", "Psychiatrist")
/datum/job/junior_doctor
alt_titles = list("Medical Student", "Fellow", "Trainee Pharmacy Technician", "Trainee Pharmacist", "Junior Pathologist")
@@ -23,10 +23,10 @@
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH) //GS13 edit: Psychologist job
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_HEADS, ACCESS_MINERAL_STOREROOM,
ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE,
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_PSYCH) //GS13 edit: Psychologist job
paycheck = PAYCHECK_COMMAND
paycheck_department = ACCOUNT_MED
bounty_types = CIV_JOB_MED
@@ -25,13 +25,13 @@
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_VAULT,
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY)
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PSYCH) //GS13 edit: Psychologist job
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_WEAPONS,
ACCESS_MEDICAL, ACCESS_ENGINE, ACCESS_CHANGE_IDS, ACCESS_AI_UPLOAD, ACCESS_EVA, ACCESS_HEADS,
ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_MAINT_TUNNELS, ACCESS_BAR, ACCESS_JANITOR, ACCESS_CONSTRUCTION, ACCESS_MORGUE,
ACCESS_CREMATORIUM, ACCESS_KITCHEN, ACCESS_HYDROPONICS, ACCESS_LAWYER,
ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_VAULT,
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY)
ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_PSYCH) //GS13 edit: Psychologist job
paycheck = PAYCHECK_COMMAND
paycheck_department = ACCOUNT_SRV
bounty_types = CIV_JOB_RANDOM
+2 -1
View File
@@ -6,7 +6,7 @@ GLOBAL_LIST_INIT(command_positions, list(
"Research Director",
"Chief Medical Officer",
"Quartermaster"))
//GS13 edit: Trainee roles
//GS13 edit: Trainee roles + Psychologist
GLOBAL_LIST_INIT(engineering_positions, list(
"Chief Engineer",
"Station Engineer",
@@ -21,6 +21,7 @@ GLOBAL_LIST_INIT(medical_positions, list(
"Virologist",
"Paramedic",
"Chemist",
"Psychologist",
"Medical Resident"))
@@ -8,6 +8,7 @@
name = "proto-kinetic crusher"
desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \
While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna."
resistance_flags = FIRE_PROOF //GS13: Fireproof miner equipment
force = 0 //You can't hit stuff unless wielded
w_class = WEIGHT_CLASS_BULKY
slot_flags = ITEM_SLOT_BACK
@@ -7,6 +7,7 @@
cell_type = /obj/item/stock_parts/cell/emproof
item_flags = NONE
obj_flags = UNIQUE_RENAME
resistance_flags = FIRE_PROOF //GS13: Fireproof miner equipment
weapon_weight = WEAPON_LIGHT
recoil = 0.5
can_flashlight = 1
@@ -12,6 +12,7 @@
taste_description = "generic food"
taste_mult = 4
value = REAGENT_VALUE_VERY_COMMON
chemical_flags = REAGENT_ORGANIC_PROCESS | REAGENT_BIOFUEL_PROCESS // GS13 edit; lets robots with the biofuel trait process foodchems
var/nutriment_factor = 1 * REAGENTS_METABOLISM
var/max_nutrition = INFINITY
var/quality = 0 //affects mood, typically higher for mixed drinks with more complex recipes
+34 -6
View File
@@ -360,6 +360,13 @@
/obj/item/apc_powercord/proc/apc_powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H)
H.visible_message("<span class='notice'>[H] inserts a power connector into [A].</span>", "<span class='notice'>You begin to draw power from [A].</span>")
//GS13 EDIT START
var/overcharge = FALSE
if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
overcharge = TRUE
//GS13 EDIT END
while(do_after(H, 10, target = A))
if(loc != H)
to_chat(H, "<span class='warning'>You must keep your connector out while charging!</span>")
@@ -378,14 +385,28 @@
A.cell.use(A.cell.charge)
to_chat(H, "<span class='notice'>You siphon off as much as [A] can spare.</span>")
break
if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
to_chat(H, "<span class='notice'>You are now fully charged.</span>")
break
//GS13 EDIT START
if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
if(!overcharge) //GS13 edit
to_chat(H, "<span class='notice'>You are now fully charged.</span>")
break
else
if(H.nutrition >= NUTRITION_LEVEL_FAT)
to_chat(H, "<span class='notice'>You've packed as much extra power into your battery as it can handle.</span>")
break
//GS13 EDIT END
in_use = FALSE
H.visible_message("<span class='notice'>[H] unplugs from [A].</span>", "<span class='notice'>You unplug from [A].</span>")
/obj/item/apc_powercord/proc/cell_powerdraw_loop(obj/item/stock_parts/cell/C, mob/living/carbon/human/H)
H.visible_message("<span class='notice'>[H] connects a power cord to [C]</span>", "<span class='notice'>You begin to draw power from [C].</span>")
//GS13 EDIT START
var/overcharge = FALSE
if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
overcharge = TRUE
//GS13 EDIT END
while(do_after(H, 10, target = C))
if(loc != H)
to_chat(H, "<span class='warning'>You must keep your connector out while charging!</span>")
@@ -397,8 +418,15 @@
C.use(siphoned_charge)
do_sparks(1, FALSE, C)
H.adjust_nutrition(siphoned_charge / 100) //Less efficient on a pure power basis than APC recharge. Still a very viable way of gaining nutrition. (100 nutrition / base 10k cell)
if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
to_chat(H, "<span class='notice'>You are now fully charged.</span>")
break
// GS13 EDIT START
if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
if(!overcharge)
to_chat(H, "<span class='notice'>You are now fully charged.</span>")
break
else
if(H.nutrition >= NUTRITION_LEVEL_FAT)
to_chat(H, "<span class='notice'>You've packed as much extra power into your battery as it can handle.</span>")
break
//GS13 EDIT END
in_use = FALSE
H.visible_message("<span class='notice'>[H] disconnects [src] from [C].</span>", "<span class='notice'>You disconnect from [C].</span>")
@@ -251,6 +251,8 @@
var/static/regex/dab_words = regex("dab|mood") //CITADEL CHANGE
var/static/regex/snap_words = regex("snap") //CITADEL CHANGE
var/static/regex/bwoink_words = regex("what the fuck are you doing|bwoink|hey you got a moment?") //CITADEL CHANGE
var/static/regex/gain_words = regex("gain|fatten|widen|get fatter|get fat") //GS13
var/static/regex/inflate_words = regex("blimp|balloon|inflate|bloat") //GS13
var/i = 0
//STUN
@@ -581,6 +583,24 @@
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(user), 'sound/effects/adminhelp.ogg', 300, 1), 25)
//END CITADEL CHANGES
//GS13 STUFF
else if((findtext(message, inflate_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/gainer in listeners)
if(gainer.check_weight_prefs(FATTENING_TYPE_MAGIC)) //Make sure the listener(s) have magical wg enabled
gainer.fullness += 20 //We want fullness but not too much
to_chat(gainer, "<span class= 'warning'>As the great voice fills your ears, you start to feel more bloated...</span>") //Can only be seen by those with the appropriate pref toggled
//GAIN
else if((findtext(message, gain_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/gainer in listeners)
if(gainer.check_weight_prefs(FATTENING_TYPE_MAGIC)) //Make sure the listener(s) have magical wg enabled
gainer.adjust_fatness(250, FATTENING_TYPE_MAGIC) //Nerfed down from 500 in oldcode
to_chat(gainer, "<span class= 'warning'>As the great voice fills your ears, you suddenly grow heavier!</span>") //Can only be seen by those with the appropriate pref toggled
//END GS13 CHANGES
else
cooldown = COOLDOWN_NONE