mirror of
https://github.com/evilew/GS13-Citadel.git
synced 2026-07-20 20:54:51 +01:00
Merge branch 'master' into moretweaks
This commit is contained in:
@@ -266,6 +266,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)))
|
||||
@@ -327,6 +329,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
|
||||
@@ -363,6 +367,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
|
||||
@@ -370,6 +376,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")
|
||||
@@ -410,6 +419,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)
|
||||
@@ -420,6 +430,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"]]"
|
||||
@@ -427,6 +438,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"]
|
||||
@@ -438,4 +450,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"
|
||||
|
||||
@@ -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
|
||||
@@ -343,6 +343,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
helplessness_clothing_back = 0
|
||||
if(isnull(helplessness_clothing_jumpsuit))
|
||||
helplessness_clothing_jumpsuit = 0
|
||||
if(isnull(helplessness_belts))
|
||||
helplessness_belts = 0
|
||||
if(isnull(helplessness_hidden_face))
|
||||
helplessness_hidden_face = 0
|
||||
if(isnull(helplessness_mute))
|
||||
@@ -869,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)
|
||||
@@ -1452,6 +1471,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Immobile Arms:</b><a href='?_src_=prefs;preference=helplessness_immobile_arms'>[helplessness_immobile_arms == FALSE ? "Disabled" : helplessness_immobile_arms]</a><BR>"
|
||||
dat += "<b>Clothing Jumpsuit:</b><a href='?_src_=prefs;preference=helplessness_clothing_jumpsuit'>[helplessness_clothing_jumpsuit == FALSE ? "Disabled" : helplessness_clothing_jumpsuit]</a><BR>"
|
||||
dat += "<b>Clothing, Suit, Boots, and Gloves:</b><a href='?_src_=prefs;preference=helplessness_clothing_misc'>[helplessness_clothing_misc == FALSE ? "Disabled" : helplessness_clothing_misc]</a><BR>"
|
||||
dat += "<b>Belts:</b><a href='?_src_=prefs;preference=helplessness_belts'>[helplessness_belts == FALSE ? "Disabled" : helplessness_belts]</a><BR>"
|
||||
dat += "<b>Clothing Back:</b><a href='?_src_=prefs;preference=helplessness_clothing_back'>[helplessness_clothing_back == FALSE ? "Disabled" : helplessness_clothing_back]</a><BR>"
|
||||
dat += "<b>No Buckle:</b><a href='?_src_=prefs;preference=helplessness_no_buckle'>[helplessness_no_buckle == FALSE ? "Disabled" : helplessness_no_buckle]</a><BR>"
|
||||
dat += "</td>"
|
||||
@@ -1570,7 +1590,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
popup.open(FALSE)
|
||||
onclose(user, "capturekeypress", src)
|
||||
|
||||
/datum/preferences/proc/SetChoices(mob/user, limit = 17, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620)
|
||||
/datum/preferences/proc/SetChoices(mob/user, limit = 22, list/splitJobs = list("Chief Engineer"), widthPerColumn = 295, height = 620) //GS13 Edit: Expanding out the pref window for new job additions
|
||||
if(!SSjob)
|
||||
return
|
||||
|
||||
@@ -2544,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()
|
||||
@@ -2840,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
|
||||
@@ -3025,7 +3080,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
var/new_wl_rate = input(user, "Choose your weight loss rate from 0.1 (10%) to 2 (200%).\n Decimals such as 0.2 indicate 20% rate.\nDefault recommended rate is 0.5 (50%)", "Character Preference", wl_rate) as num|null
|
||||
if (new_wl_rate)
|
||||
wl_rate = max(min(round(text2num(new_wl_rate),0.01),2),0)
|
||||
|
||||
|
||||
if("stuckage_chance")
|
||||
var/new_stuckage_chance = input(user, "Choose your chance to get stuck in doors from 0.1 (10%) to 1 (100%).\nDecimals such as 0.2 indicate 20% chance.\nSetting this to 0 restores default values.", "Character Preference", stuckage_chance) as num|null
|
||||
if(new_stuckage_chance)
|
||||
@@ -3157,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))
|
||||
@@ -3542,6 +3602,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
helplessness_clothing_jumpsuit = chose_weight("Choose the level of fatness that you would like to be made unable to wear jumpsuits at. None will disable this alltogether", user)
|
||||
if("helplessness_clothing_misc")
|
||||
helplessness_clothing_misc = chose_weight("Choose the level of fatness that you would like to be made unable to wear other non-jumpsuit clothing at. None will disable this alltogether", user)
|
||||
if("helplessness_belts")
|
||||
helplessness_belts = chose_weight("Choose the level of fatness that you would like to be made unable to wear belts at. This also affects how much weight the Primitive Bluespace Belt can hide. None will disable this alltogether", user)
|
||||
if("helplessness_clothing_back")
|
||||
helplessness_clothing_back = chose_weight("Choose the level of fatness that you would like to be made unable to wear anything on your back at. None will disable this alltogether", user)
|
||||
if("helplessness_no_buckle")
|
||||
|
||||
@@ -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"]
|
||||
@@ -949,6 +959,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
S["helplessness_immobile_arms"] >> helplessness_immobile_arms
|
||||
S["helplessness_clothing_jumpsuit"] >> helplessness_clothing_jumpsuit
|
||||
S["helplessness_clothing_misc"] >> helplessness_clothing_misc
|
||||
S["helplessness_belts"] >> helplessness_belts
|
||||
S["helplessness_clothing_back"] >> helplessness_clothing_back
|
||||
S["helplessness_no_buckle"] >> helplessness_no_buckle
|
||||
S["stuckage"] >> stuckage
|
||||
@@ -1086,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")
|
||||
@@ -1245,6 +1261,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
|
||||
WRITE_FILE(S["helplessness_immobile_arms"], helplessness_immobile_arms)
|
||||
WRITE_FILE(S["helplessness_clothing_jumpsuit"], helplessness_clothing_jumpsuit)
|
||||
WRITE_FILE(S["helplessness_clothing_misc"], helplessness_clothing_misc)
|
||||
WRITE_FILE(S["helplessness_belts"], helplessness_belts)
|
||||
WRITE_FILE(S["helplessness_clothing_back"], helplessness_clothing_back)
|
||||
WRITE_FILE(S["helplessness_no_buckle"], helplessness_no_buckle)
|
||||
WRITE_FILE(S["stuckage"], stuckage)
|
||||
@@ -1324,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")
|
||||
|
||||
@@ -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)
|
||||
@@ -353,9 +355,9 @@
|
||||
|
||||
/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",
|
||||
"Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic",
|
||||
"Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Prisoner")
|
||||
"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", "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")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
//Engineering
|
||||
/datum/job/chief_engineer
|
||||
alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager", "Power Plant Director")
|
||||
alt_titles = list("Head Engineer", "Construction Coordinator", "Project Manager", "Power Plant Director", "Engineering Foreman")
|
||||
|
||||
/datum/job/engineer
|
||||
alt_titles = list("Maintenance Technician", "Engine Technician", "Electrician", "Structural Engineer", "Mechanic", "Station Architect", "Nuclear Plant Operator")
|
||||
@@ -10,27 +10,30 @@
|
||||
/datum/job/atmos
|
||||
alt_titles = list("Firefighter", "Life Support Specialist", "Disposals Technician")
|
||||
|
||||
/datum/job/junior_engineer
|
||||
alt_titles = list("Atmospheric Intern", "Apprentice Engineer")
|
||||
|
||||
//Service
|
||||
/datum/job/assistant
|
||||
alt_titles = list("Civilian", "Morale Officer", "Off-Duty", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist")
|
||||
alt_titles = list("Civilian", "Morale Officer", "Off-Duty", "Visitor", "Businessman", "Trader", "Entertainer", "Tourist", "Artist", "Businesswoman", "Butler", "Contractor", "Entertainer", "Freelancer", "Fitness Instructor", "Hobbyist", "Performer")
|
||||
|
||||
/datum/job/cook
|
||||
alt_titles = list("Cook", "Culinary Artist", "Butcher", "Chef de partie", "Poissonier", "Baker", "Taste Tester")
|
||||
|
||||
/datum/job/hydro
|
||||
alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Farmer", "Beekeeper", "Vintner")
|
||||
alt_titles = list("Gardener", "Herbalist", "Botanical Researcher", "Hydroponicist", "Apiarist", "Apiculturist", "Farmer", "Beekeeper", "Vintner", "Junior Botanist")
|
||||
|
||||
/datum/job/curator
|
||||
alt_titles = list("Journalist", "Librarian", "Keeper")
|
||||
alt_titles = list("Journalist", "Librarian", "Keeper", "Historian", "Professor", "Archivist")
|
||||
|
||||
/datum/job/chaplain
|
||||
alt_titles = list("Priest", "Priestess", "Prior", "Monk", "Nun", "Counselor")
|
||||
alt_titles = list("Priest", "Priestess", "Prior", "Monk", "Nun", "Counselor", "Cleric", "High Priest", "High Priestess", "Imam", "Oracle", "Preacher", "Pastor", "Pontifex", "Guru", "Rabbi", "Reverend", "Shrine Maiden", "Shrine Guardian")
|
||||
|
||||
/datum/job/janitor
|
||||
alt_titles = list("Custodian", "Sanitation Technician", "Maid", "Trash Can", "Disposal Unit")
|
||||
alt_titles = list("Custodian", "Custodial Technician", "Sanitation Technician", "Maintenance Technician", "Maid", "Trash Can", "Disposal Unit", "Groundskeeper")
|
||||
|
||||
/datum/job/lawyer
|
||||
alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney")
|
||||
alt_titles = list("Human Resources Agent", "Internal Affairs Agent", "Attorney", "Defense Attorney", "Legal Clerk", "Public Defender")
|
||||
|
||||
/datum/job/clown
|
||||
alt_titles = list("Jester", "Comedian")
|
||||
@@ -39,61 +42,75 @@
|
||||
alt_titles = list("Performer", "Pantomime", "Mimic")
|
||||
|
||||
/datum/job/bartender
|
||||
alt_titles = list("Mixologist", "Sommelier", "Bar Owner", "Barmaid", "Expediter")
|
||||
alt_titles = list("Mixologist", "Sommelier", "Bar Owner", "Barmaid", "Expediter", "Barista", "Tavernkeeper")
|
||||
|
||||
//Science
|
||||
/datum/job/rd
|
||||
alt_titles = list("Research Manager", "Science Administrator")
|
||||
alt_titles = list("Research Manager", "Science Administrator", "Chief Science Officer", "Lead Researcher", "Science Director", "Head of Science")
|
||||
|
||||
/datum/job/scientist
|
||||
alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician")
|
||||
alt_titles = list("Circuitry Designer", "Xenobiologist", "Xenobotanist", "Xenoarcheologist", "Chemical Researcher", "Researcher", "Pyrotechnician", "Lab Technician", "Theoretical Physicist")
|
||||
|
||||
/datum/job/roboticist
|
||||
alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic")
|
||||
alt_titles = list("Biomechanical Engineer", "Mechatronic Engineer", "Mechanic", "Machinist")
|
||||
|
||||
/datum/job/junior_scientist
|
||||
alt_titles = list("Research Intern", "Apprentice Roboticist", "Research Assistant")
|
||||
|
||||
//Medical
|
||||
/datum/job/cmo
|
||||
alt_titles = list("Medical Director", "Medical Administrator")
|
||||
alt_titles = list("Medical Director", "Medical Administrator", "Chief Physician", "Head of Medical", "Head Physician")
|
||||
|
||||
/datum/job/doctor
|
||||
alt_titles = list("Nurse", "Surgeon", "Physician", "Paramedic", "Trophologist", "Nutritionist", "Therapist", "Psychiatrist")
|
||||
alt_titles = list("Nurse", "Surgeon", "Physician", "Trophologist", "Nutritionist", "Therapist", "Psychiatrist")
|
||||
|
||||
/datum/job/chemist
|
||||
alt_titles = list("Pharmacist", "Pharmacologist")
|
||||
alt_titles = list("Pharmacist", "Pharmacologist", "Pharmacy Technician")
|
||||
|
||||
/datum/job/virologist
|
||||
alt_titles = list("Microbiologist", "Biochemist", "Pathologist")
|
||||
alt_titles = list("Microbiologist", "Biochemist", "Pathologist", "Epidemiologist")
|
||||
|
||||
/datum/job/geneticist
|
||||
alt_titles = list("Gene Therapist", "Genetics Researcher")
|
||||
alt_titles = list("Gene Therapist", "Genetics Researcher", "Mutation Researcher", "Gene Tailor")
|
||||
|
||||
/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")
|
||||
|
||||
//Security
|
||||
/datum/job/hos
|
||||
alt_titles = list("Chief of Security", "Security Commander", "Sheriff")
|
||||
|
||||
/datum/job/warden
|
||||
alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent")
|
||||
alt_titles = list("Prison Chief", "Armory Manager", "Prison Administrator", "Brig Superintendent", "Deputy Commissioner of Security")
|
||||
|
||||
/datum/job/officer
|
||||
alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Guardsman", "Security Cadet")
|
||||
alt_titles = list("Security Agent", "Probation Officer", "Security Peacekeeper", "Security Guard", "Security Constable", "Security Operative", "Guardsman")
|
||||
|
||||
/datum/job/detective
|
||||
alt_titles = list("Forensics Technician", "Private Investigator", "Gumshoe")
|
||||
|
||||
/datum/job/junior_officer
|
||||
alt_titles = list("Security Assistant","Rookie", "Brig Deputy", "Junior Officer")
|
||||
|
||||
//Supply
|
||||
/datum/job/qm
|
||||
alt_titles = list("Supply Chief")
|
||||
alt_titles = list("Supply Chief", "Head of Supply", "Logistics Coordinator", "Warehouse Supervisor")
|
||||
|
||||
/datum/job/cargo_tech
|
||||
alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician")
|
||||
alt_titles = list("Mail Man", "Mail Woman", "Mailroom Technician", "Deliveries Officer", "Logistics Technician", "Warehouse Technician")
|
||||
|
||||
/datum/job/mining
|
||||
alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!!
|
||||
alt_titles = list("Exotic Ore Miner", "Fauna Hunter", "Explorer", "Digger", "Apprentice Miner") //Just because you're a hunter does not excuse you from rock collecting!!!!!!!!!!!!
|
||||
|
||||
//Command
|
||||
/datum/job/captain
|
||||
alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar")
|
||||
alt_titles = list("Station Director", "Station Commander", "Station Overseer", "Stationmaster", "Commissar", "Facility Director", "Commanding Officer")
|
||||
|
||||
/datum/job/hop
|
||||
alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator")
|
||||
alt_titles = list("Personnel Manager", "Staff Administrator", "Records Administrator", "Crew Supervisor", "Employment Officer", "Executive Officer")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
auto_deadmin_role_flags = DEADMIN_POSITION_SILICON
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 0
|
||||
total_positions = 1 //GS13 Edit: latejoining borgs
|
||||
spawn_positions = 3
|
||||
supervisors = "your laws and the AI" //Nodrak
|
||||
selection_color = "#ddffdd"
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
/datum/job/junior_engineer
|
||||
title = "Engineering Intern"
|
||||
flag = JR_ENGINEER
|
||||
department_head = list("Chief Engineer")
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief engineer, and any other more experienced engineers"
|
||||
selection_color = "#ff9b3d"
|
||||
exp_requirements = 60
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
outfit = /datum/outfit/job/engineer/junior
|
||||
plasma_outfit = /datum/outfit/plasmaman/engineering
|
||||
|
||||
access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS,
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
departments = DEPARTMENT_BITFLAG_ENGINEERING
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER
|
||||
|
||||
threat = 1
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/clothing/head/hardhat,
|
||||
/obj/item/screwdriver/brass/family,
|
||||
/obj/item/wrench/brass/family,
|
||||
/obj/item/weldingtool/mini, // No brass family variant
|
||||
/obj/item/crowbar/brass/family,
|
||||
/obj/item/wirecutters/brass/family
|
||||
)
|
||||
|
||||
mail_goodies = list(
|
||||
/obj/item/storage/box/lights/mixed = 20,
|
||||
/obj/item/lightreplacer = 10,
|
||||
/obj/item/holosign_creator/engineering = 8,
|
||||
/obj/item/clothing/head/hardhat/red/upgraded = 1
|
||||
)
|
||||
|
||||
/datum/outfit/job/engineer/junior
|
||||
name = "Engineering Intern"
|
||||
jobtype = /datum/job/junior_engineer
|
||||
|
||||
belt = /obj/item/storage/belt/utility/full/engi
|
||||
l_pocket = /obj/item/pda/engineering
|
||||
ears = /obj/item/radio/headset/headset_eng
|
||||
uniform = /obj/item/clothing/under/rank/engineering/engineer
|
||||
shoes = /obj/item/clothing/shoes/workboots
|
||||
head = /obj/item/clothing/head/hardhat
|
||||
r_pocket = /obj/item/t_scanner
|
||||
|
||||
backpack = /obj/item/storage/backpack/industrial
|
||||
satchel = /obj/item/storage/backpack/satchel/eng
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/engineering
|
||||
box = /obj/item/storage/box/survival/engineer
|
||||
pda_slot = ITEM_SLOT_LPOCKET
|
||||
backpack_contents = list(/obj/item/modular_computer/tablet/preset/advanced=1)
|
||||
|
||||
/datum/outfit/job/engineer/gloved
|
||||
name = "Station Engineer (Gloves)"
|
||||
gloves = /obj/item/clothing/gloves/color/yellow
|
||||
|
||||
/datum/outfit/job/engineer/gloved/rig
|
||||
name = "Station Engineer (Hardsuit)"
|
||||
mask = /obj/item/clothing/mask/breath
|
||||
suit = /obj/item/clothing/suit/space/hardsuit/engine
|
||||
suit_store = /obj/item/tank/internals/oxygen
|
||||
head = null
|
||||
internals_slot = ITEM_SLOT_SUITSTORE
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
/datum/job/junior_doctor
|
||||
title = "Medical Resident"
|
||||
flag = JR_DOCTOR
|
||||
department_head = list("Chief Medical Officer")
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 2
|
||||
supervisors = "the chief medical officer, and any other senior medical staff"
|
||||
selection_color = "#74b5e0"
|
||||
|
||||
outfit = /datum/outfit/job/doctor/junior
|
||||
departments = DEPARTMENT_BITFLAG_MEDICAL
|
||||
plasma_outfit = /datum/outfit/plasmaman/medical
|
||||
|
||||
access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_MED
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR
|
||||
threat = 0.5
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/storage/firstaid/ancient/heirloom
|
||||
)
|
||||
|
||||
mail_goodies = list(
|
||||
/obj/effect/spawner/lootdrop/organ_spawner = 5,
|
||||
// /obj/effect/spawner/lootdrop/memeorgans = 1
|
||||
)
|
||||
|
||||
/datum/outfit/job/doctor/junior
|
||||
name = "Medical Resident"
|
||||
jobtype = /datum/job/junior_doctor
|
||||
|
||||
belt = /obj/item/pda/medical
|
||||
ears = /obj/item/radio/headset/headset_med
|
||||
uniform = /obj/item/clothing/under/rank/medical/doctor
|
||||
shoes = /obj/item/clothing/shoes/sneakers/white
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat
|
||||
l_hand = /obj/item/storage/firstaid/regular
|
||||
suit_store = /obj/item/flashlight/pen
|
||||
|
||||
backpack = /obj/item/storage/backpack/medic
|
||||
satchel = /obj/item/storage/backpack/satchel/med
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/med
|
||||
|
||||
chameleon_extras = /obj/item/gun/syringe
|
||||
@@ -0,0 +1,49 @@
|
||||
/datum/job/junior_scientist
|
||||
title = "Research Student"
|
||||
flag = SCIENTIST
|
||||
department_head = list("Research Director")
|
||||
department_flag = MEDSCI
|
||||
faction = "Station"
|
||||
total_positions = 2
|
||||
spawn_positions = 1
|
||||
supervisors = "the research director, and any other senior science staff"
|
||||
selection_color = "#9574cd"
|
||||
exp_requirements = 60
|
||||
exp_type = EXP_TYPE_CREW
|
||||
|
||||
outfit = /datum/outfit/job/scientist/junior
|
||||
plasma_outfit = /datum/outfit/plasmaman/science
|
||||
|
||||
access = list(ACCESS_ROBOTICS, ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_GENETICS)
|
||||
minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SCI
|
||||
bounty_types = CIV_JOB_SCI
|
||||
departments = DEPARTMENT_BITFLAG_SCIENCE
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
|
||||
display_order = JOB_DISPLAY_ORDER_SCIENTIST
|
||||
threat = 1.2
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/toy/plush/slimeplushie
|
||||
)
|
||||
|
||||
mail_goodies = list(
|
||||
// /obj/item/raw_anomaly_core/random = 10, no free cores for probies
|
||||
// /obj/item/disk/tech_disk/spaceloot = 2,
|
||||
/obj/item/camera_bug = 1
|
||||
)
|
||||
|
||||
/datum/outfit/job/scientist/junior
|
||||
name = "Research Student"
|
||||
jobtype = /datum/job/junior_scientist
|
||||
|
||||
belt = /obj/item/pda/toxins
|
||||
ears = /obj/item/radio/headset/headset_sci
|
||||
uniform = /obj/item/clothing/under/rank/rnd/scientist
|
||||
shoes = /obj/item/clothing/shoes/sneakers/white
|
||||
suit = /obj/item/clothing/suit/toggle/labcoat/science
|
||||
|
||||
backpack = /obj/item/storage/backpack/science
|
||||
satchel = /obj/item/storage/backpack/satchel/tox
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
/datum/job/junior_officer
|
||||
title = "Security Cadet"
|
||||
flag = JR_OFFICER
|
||||
auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY
|
||||
department_head = list("Head of Security")
|
||||
department_flag = ENGSEC
|
||||
faction = "Station"
|
||||
total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
|
||||
spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
|
||||
supervisors = "the head of security, and the head of your assigned department (if applicable), and any other senior officer"
|
||||
selection_color = "#c02f2f"
|
||||
minimal_player_age = 3
|
||||
exp_requirements = 300
|
||||
exp_type = EXP_TYPE_CREW
|
||||
considered_combat_role = TRUE
|
||||
|
||||
outfit = /datum/outfit/job/security/junior
|
||||
plasma_outfit = /datum/outfit/plasmaman/security
|
||||
|
||||
access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM)
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access()
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
departments = DEPARTMENT_BITFLAG_SECURITY
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
|
||||
threat = 2
|
||||
|
||||
family_heirlooms = list(
|
||||
/obj/item/book/manual/gato_spacelaw
|
||||
)
|
||||
|
||||
mail_goodies = list(
|
||||
/obj/item/reagent_containers/food/snacks/donut/caramel = 10,
|
||||
/obj/item/reagent_containers/food/snacks/donut/matcha = 10,
|
||||
/obj/item/reagent_containers/food/snacks/donut/blumpkin = 5,
|
||||
// /obj/item/clothing/mask/whistle = 5,
|
||||
// /obj/item/melee/baton/boomerang/loaded = 1
|
||||
)
|
||||
|
||||
/datum/job/junior_officer/get_access()
|
||||
var/list/L = list()
|
||||
L |= ..() | check_config_for_sec_maint()
|
||||
return L
|
||||
|
||||
|
||||
/datum/job/junior_officer/after_spawn(mob/living/spawned, client/player_client, latejoin = FALSE)
|
||||
. = ..()
|
||||
if(!ishuman(spawned))
|
||||
return
|
||||
var/mob/living/carbon/human/H = spawned
|
||||
// Assign department security
|
||||
var/department
|
||||
if(player_client?.prefs)
|
||||
department = player_client.prefs.prefered_security_department
|
||||
if(!LAZYLEN(GLOB.available_depts) || department == "None")
|
||||
return
|
||||
else if(department in GLOB.available_depts)
|
||||
LAZYREMOVE(GLOB.available_depts, department)
|
||||
else
|
||||
department = pick_n_take(GLOB.available_depts)
|
||||
var/ears = null
|
||||
var/accessory = null
|
||||
var/list/dep_access = null
|
||||
var/destination = null
|
||||
var/spawn_point = null
|
||||
switch(department)
|
||||
if(SEC_DEPT_SUPPLY)
|
||||
ears = /obj/item/radio/headset/headset_sec/alt/department/supply
|
||||
dep_access = list(ACCESS_MAILSORTING, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_CARGO)
|
||||
destination = /area/security/checkpoint/supply
|
||||
spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in GLOB.department_security_spawns
|
||||
accessory = /obj/item/clothing/accessory/armband/cargo
|
||||
if(SEC_DEPT_ENGINEERING)
|
||||
ears = /obj/item/radio/headset/headset_sec/alt/department/engi
|
||||
dep_access = list(ACCESS_CONSTRUCTION, ACCESS_ENGINE, ACCESS_ATMOSPHERICS)
|
||||
destination = /area/security/checkpoint/engineering
|
||||
spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in GLOB.department_security_spawns
|
||||
accessory = /obj/item/clothing/accessory/armband/engine
|
||||
if(SEC_DEPT_MEDICAL)
|
||||
ears = /obj/item/radio/headset/headset_sec/alt/department/med
|
||||
dep_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING)
|
||||
destination = /area/security/checkpoint/medical
|
||||
spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in GLOB.department_security_spawns
|
||||
accessory = /obj/item/clothing/accessory/armband/medblue
|
||||
if(SEC_DEPT_SCIENCE)
|
||||
ears = /obj/item/radio/headset/headset_sec/alt/department/sci
|
||||
dep_access = list(ACCESS_RESEARCH, ACCESS_TOX)
|
||||
destination = /area/security/checkpoint/science
|
||||
spawn_point = locate(/obj/effect/landmark/start/depsec/science) in GLOB.department_security_spawns
|
||||
accessory = /obj/item/clothing/accessory/armband/science
|
||||
|
||||
if(accessory)
|
||||
var/obj/item/clothing/under/U = H.w_uniform
|
||||
U.attach_accessory(new accessory)
|
||||
if(ears)
|
||||
if(H.ears)
|
||||
qdel(H.ears)
|
||||
H.equip_to_slot_or_del(new ears(H),ITEM_SLOT_EARS)
|
||||
|
||||
var/obj/item/card/id/W = H.wear_id
|
||||
W.access |= dep_access
|
||||
|
||||
var/teleport = 0
|
||||
if(!CONFIG_GET(flag/sec_start_brig))
|
||||
if(destination || spawn_point)
|
||||
teleport = 1
|
||||
if(teleport)
|
||||
var/turf/T
|
||||
if(spawn_point)
|
||||
T = get_turf(spawn_point)
|
||||
H.Move(T)
|
||||
else
|
||||
var/safety = 0
|
||||
while(safety < 25)
|
||||
T = safepick(get_area_turfs(destination))
|
||||
if(T && !H.Move(T))
|
||||
safety += 1
|
||||
continue
|
||||
else
|
||||
break
|
||||
if(department)
|
||||
to_chat(H, "<b>You have been assigned to [department]!</b>")
|
||||
else
|
||||
to_chat(H, "<b>You have not been assigned to any department. Patrol the halls and help where needed.</b>")
|
||||
|
||||
/datum/outfit/job/security/junior
|
||||
name = "Security Cadet"
|
||||
jobtype = /datum/job/junior_officer
|
||||
|
||||
belt = /obj/item/pda/security
|
||||
ears = /obj/item/radio/headset/headset_sec/alt
|
||||
uniform = /obj/item/clothing/under/rank/security/officer
|
||||
gloves = /obj/item/clothing/gloves/color/black
|
||||
head = /obj/item/clothing/head/helmet/sec
|
||||
suit = /obj/item/clothing/suit/armor/vest/alt
|
||||
shoes = /obj/item/clothing/shoes/jackboots/sec
|
||||
l_pocket = /obj/item/restraints/handcuffs
|
||||
r_pocket = /obj/item/assembly/flash/handheld
|
||||
suit_store = /obj/item/gun/energy/e_gun/advtaser
|
||||
backpack_contents = list(/obj/item/melee/baton/loaded=1)
|
||||
|
||||
backpack = /obj/item/storage/backpack/security
|
||||
satchel = /obj/item/storage/backpack/satchel/sec
|
||||
duffelbag = /obj/item/storage/backpack/duffelbag/sec
|
||||
box = /obj/item/storage/box/survival/security
|
||||
|
||||
implants = list(/obj/item/implant/mindshield)
|
||||
|
||||
chameleon_extras = list(/obj/item/gun/energy/disabler, /obj/item/clothing/glasses/hud/security/sunglasses, /obj/item/clothing/head/helmet)
|
||||
//The helmet is necessary because /obj/item/clothing/head/helmet/sec is overwritten in the chameleon list by the standard helmet, which has the same name and icon state
|
||||
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/department/Initialize(mapload)
|
||||
. = ..()
|
||||
wires = new/datum/wires/radio(src)
|
||||
secure_radio_connections = new
|
||||
recalculateChannels()
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/department/engi
|
||||
keyslot = new /obj/item/encryptionkey/headset_sec
|
||||
keyslot2 = new /obj/item/encryptionkey/headset_eng
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/department/supply
|
||||
keyslot = new /obj/item/encryptionkey/headset_sec
|
||||
keyslot2 = new /obj/item/encryptionkey/headset_cargo
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/department/med
|
||||
keyslot = new /obj/item/encryptionkey/headset_sec
|
||||
keyslot2 = new /obj/item/encryptionkey/headset_med
|
||||
|
||||
/obj/item/radio/headset/headset_sec/alt/department/sci
|
||||
keyslot = new /obj/item/encryptionkey/headset_sec
|
||||
keyslot2 = new /obj/item/encryptionkey/headset_sci
|
||||
@@ -6,11 +6,12 @@ GLOBAL_LIST_INIT(command_positions, list(
|
||||
"Research Director",
|
||||
"Chief Medical Officer",
|
||||
"Quartermaster"))
|
||||
|
||||
//GS13 edit: Trainee roles + Psychologist
|
||||
GLOBAL_LIST_INIT(engineering_positions, list(
|
||||
"Chief Engineer",
|
||||
"Station Engineer",
|
||||
"Atmospheric Technician"))
|
||||
"Atmospheric Technician",
|
||||
"Engineering Intern"))
|
||||
|
||||
|
||||
GLOBAL_LIST_INIT(medical_positions, list(
|
||||
@@ -19,13 +20,16 @@ GLOBAL_LIST_INIT(medical_positions, list(
|
||||
"Geneticist",
|
||||
"Virologist",
|
||||
"Paramedic",
|
||||
"Chemist"))
|
||||
"Chemist",
|
||||
"Psychologist",
|
||||
"Medical Resident"))
|
||||
|
||||
|
||||
GLOBAL_LIST_INIT(science_positions, list(
|
||||
"Research Director",
|
||||
"Scientist",
|
||||
"Roboticist"))
|
||||
"Roboticist",
|
||||
"Research Student"))
|
||||
|
||||
GLOBAL_LIST_INIT(supply_positions, list(
|
||||
"Quartermaster",
|
||||
@@ -50,8 +54,9 @@ GLOBAL_LIST_INIT(security_positions, list(
|
||||
"Head of Security",
|
||||
"Warden",
|
||||
"Detective",
|
||||
"Security Officer"))
|
||||
|
||||
"Security Officer",
|
||||
"Security Cadet"))
|
||||
//End Edits
|
||||
|
||||
GLOBAL_LIST_INIT(nonhuman_positions, list(
|
||||
"AI",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -371,7 +371,7 @@
|
||||
if(!key)
|
||||
msg += "<span class='deadsay'>[t_He] [t_is] totally catatonic. The stresses of life in deep-space must have been too much for [t_him]. Any recovery is unlikely.</span>\n"
|
||||
else if(!client)
|
||||
msg += "[t_He] [t_has] a blank, absent-minded stare and appears completely unresponsive to anything. [t_He] may snap out of it soon.\n"
|
||||
msg += "[t_He] [t_has] a blank, absent-minded stare and [t_has] been completely unresponsive to anything for [round(((world.time - lastclienttime) / (1 MINUTES)),1)] minutes. [t_He] may snap out of it soon.\n" //GS13 Edit: SSD timer
|
||||
|
||||
if(digitalcamo)
|
||||
msg += "[t_He] [t_is] moving [t_his] body in an unnatural and blatantly inhuman manner.\n"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
damage_overlay_type = "" //We are too cool for regular damage overlays
|
||||
species_traits = list(MUTCOLORS, HAIR, HAS_FLESH, HAS_BONE) // i mean i guess they have blood so they can have wounds too
|
||||
species_language_holder = /datum/language_holder/ethereal
|
||||
inherent_traits = list(TRAIT_NOHUNGER)
|
||||
inherent_traits = list() //GS13 Edit: Our electric brethren want to be fat too
|
||||
sexes = FALSE
|
||||
toxic_food = NONE
|
||||
/*
|
||||
|
||||
@@ -524,6 +524,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
||||
if(!SSD)
|
||||
add_status_indicator("ssd")
|
||||
SSD = TRUE
|
||||
lastclienttime = world.time //GS13 Editception: SSD timer
|
||||
else
|
||||
if(SSD)
|
||||
remove_status_indicator("ssd")
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
|
||||
// GS13 EDIT
|
||||
var/SSD = FALSE
|
||||
var/lastclienttime = 0 //GS13 Editception: SSD timer
|
||||
|
||||
var/list/pipes_shown = list()
|
||||
var/last_played_vent
|
||||
|
||||
@@ -39,3 +39,11 @@
|
||||
gender = FEMALE
|
||||
gold_core_spawnable = NO_SPAWN
|
||||
unique_pet = TRUE
|
||||
|
||||
/mob/living/simple_animal/pet/fox/fennec //ported from CHOMPstation2
|
||||
name = "fennec"
|
||||
desc = "It's an earsy fennec fox."
|
||||
icon = 'v_CHOMPstation2/icons/mob/fennec.dmi'
|
||||
icon_state = "fennec"
|
||||
icon_living = "fennec"
|
||||
icon_dead = "fennec_dead"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -57,15 +57,27 @@
|
||||
category = list("Misc","Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
// GS13 EDIT
|
||||
/datum/design/inducer
|
||||
name = "Inducer"
|
||||
desc = "The GT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them." //GS13 - NT to GT
|
||||
id = "inducer"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/inducer/dry///sci
|
||||
category = list("Power Designs")
|
||||
departmental_flags = /*DEPARTMENTAL_FLAG_SCIENCE | */DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/inducer_sci
|
||||
name = "Inducer"
|
||||
desc = "The GT-75 Electromagnetic Power Inducer can wirelessly induce electric charge in an object, allowing you to recharge power cells without having to remove them." //GS13 - NT to GT
|
||||
id = "inducer_sci"
|
||||
build_type = PROTOLATHE
|
||||
materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000)
|
||||
build_path = /obj/item/inducer/sci
|
||||
category = list("Power Designs")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
|
||||
// GS13 END EDIT
|
||||
|
||||
/datum/design/inducercombat
|
||||
name = "Combat Ready Inducer"
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
display_name = "Electromagnetic Theory"
|
||||
description = "Study into usage of frequencies in the electromagnetic spectrum."
|
||||
prereq_ids = list("base")
|
||||
design_ids = list("holosign", "holosignsec", "holosignengi", "holosignatmos",/* "holosignfirelock",*/ "inducer", "tray_goggles", "holopad")
|
||||
design_ids = list("holosign", "holosignsec", "holosignengi", "holosignatmos",/* "holosignfirelock",*/ "inducer", /*GS13 EDIT*/ "inducer_sci", /*GS13 END EDIT*/ "tray_goggles", "holopad")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
|
||||
|
||||
/datum/techweb_node/emp_adv
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -29,6 +29,8 @@
|
||||
/datum/language/signlanguage,
|
||||
/datum/language/neokanji,
|
||||
/datum/language/sylvan,
|
||||
/datum/language/spacerussian, //GS13 Edit: Neo-Russkiya & Siik'Tajr language
|
||||
/datum/language/tajara,
|
||||
))
|
||||
healing_factor = STANDARD_ORGAN_HEALING*5 //Fast!!
|
||||
decay_factor = STANDARD_ORGAN_DECAY/2
|
||||
@@ -266,6 +268,8 @@
|
||||
/datum/language/sylvan,
|
||||
/datum/language/voltaic,
|
||||
/datum/language/neokanji,
|
||||
/datum/language/spacerussian, //GS13 Edit: Neo-Russkiya & Siik'Tajr language
|
||||
/datum/language/tajara,
|
||||
))
|
||||
|
||||
/obj/item/organ/tongue/ethereal/Initialize(mapload)
|
||||
@@ -286,6 +290,8 @@
|
||||
/datum/language/beachbum,
|
||||
/datum/language/aphasia,
|
||||
/datum/language/arachnid,
|
||||
/datum/language/spacerussian, //GS13 Edit: Neo-Russkiya & Siik'Tajr language
|
||||
/datum/language/tajara,
|
||||
))
|
||||
|
||||
/obj/item/organ/tongue/arachnid/Initialize(mapload)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user