Merge branch 'master' of https://github.com/PolarisSS13/Polaris into vatborn

This commit is contained in:
Anewbe
2017-10-19 09:57:26 -05:00
144 changed files with 1595 additions and 847 deletions
@@ -29,6 +29,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["organ_data"] >> pref.organ_data
S["rlimb_data"] >> pref.rlimb_data
S["body_markings"] >> pref.body_markings
S["synth_color"] >> pref.synth_color
S["synth_red"] >> pref.r_synth
S["synth_green"] >> pref.g_synth
S["synth_blue"] >> pref.b_synth
pref.preview_icon = null
/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S)
@@ -53,6 +57,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
S["organ_data"] << pref.organ_data
S["rlimb_data"] << pref.rlimb_data
S["body_markings"] << pref.body_markings
S["synth_color"] << pref.synth_color
S["synth_red"] << pref.r_synth
S["synth_green"] << pref.g_synth
S["synth_blue"] << pref.b_synth
/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S)
if(!pref.species || !(pref.species in playable_species))
@@ -101,6 +109,10 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
character.h_style = pref.h_style
character.f_style = pref.f_style
character.b_type = pref.b_type
character.synth_color = pref.synth_color
character.r_synth = pref.r_synth
character.g_synth = pref.g_synth
character.b_synth = pref.b_synth
// Destroy/cyborgize organs and limbs.
for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO))
@@ -284,6 +296,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += "<font face='fixedsys' size='3' color='[pref.body_markings[M]]'><table style='display:inline;' bgcolor='[pref.body_markings[M]]'><tr><td>__</td></tr></table></font>"
. += "<br>"
. += "<br>"
. += "<b>Allow Synth color:</b> <a href='?src=\ref[src];synth_color=1'><b>[pref.synth_color ? "Yes" : "No"]</b></a><br>"
if(pref.synth_color)
. += "<a href='?src=\ref[src];synth2_color=1'>Change Color</a> <font face='fixedsys' size='3' color='#[num2hex(pref.r_synth, 2)][num2hex(pref.g_synth, 2)][num2hex(pref.b_synth, 2)]'><table style='display:inline;' bgcolor='#[num2hex(pref.r_synth, 2)][num2hex(pref.g_synth, 2)][num2hex(pref.b_synth)]'><tr><td>__</td></tr></table></font> "
. = jointext(.,null)
/datum/category_item/player_setup_item/general/body/proc/has_flag(var/datum/species/mob_species, var/flag)
@@ -665,6 +682,18 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"])
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["synth_color"])
pref.synth_color = !pref.synth_color
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["synth2_color"])
var/new_color = input(user, "Choose your character's synth colour: ", "Character Preference", rgb(pref.r_synth, pref.g_synth, pref.b_synth)) as color|null
if(new_color && CanUseTopic(user))
pref.r_synth = hex2num(copytext(new_color, 2, 4))
pref.g_synth = hex2num(copytext(new_color, 4, 6))
pref.b_synth = hex2num(copytext(new_color, 6, 8))
return TOPIC_REFRESH_UPDATE_PREVIEW
return ..()
/datum/category_item/player_setup_item/general/body/proc/reset_limbs()
@@ -14,7 +14,8 @@ var/list/gear_datums = list()
//create a list of gear datums to sort
for(var/geartype in typesof(/datum/gear)-/datum/gear)
var/datum/gear/G = geartype
if(initial(G.type_category) == geartype)
continue
var/use_name = initial(G.display_name)
var/use_category = initial(G.sort_category)
@@ -205,6 +206,7 @@ var/list/gear_datums = list()
var/sort_category = "General"
var/list/gear_tweaks = list() //List of datums which will alter the item after it has been spawned.
var/exploitable = 0 //Does it go on the exploitable information list?
var/type_category = null
/datum/gear/New()
..()
@@ -1,42 +1,28 @@
/datum/gear/accessory
display_name = "armband, red"
path = /obj/item/clothing/accessory/armband
display_name = "accessory"
slot = slot_tie
sort_category = "Accessories"
type_category = /datum/gear/accessory
path = /obj/item/clothing/accessory
cost = 1
/datum/gear/accessory/cargo
display_name = "armband, cargo"
path = /obj/item/clothing/accessory/armband/cargo
/datum/gear/accessory/armband
display_name = "armband selection"
path = /obj/item/clothing/accessory/armband
/datum/gear/accessory/emt
display_name = "armband, EMT"
path = /obj/item/clothing/accessory/armband/medblue
/datum/gear/accessory/armband/New()
..()
var/list/armbands = list()
for(var/armband in (typesof(/obj/item/clothing/accessory/armband) - typesof(/obj/item/clothing/accessory/armband/med/color)))
var/obj/item/clothing/accessory/armband_type = armband
armbands[initial(armband_type.name)] = armband_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(armbands))
/datum/gear/accessory/engineering
display_name = "armband, engineering"
path = /obj/item/clothing/accessory/armband/engine
/datum/gear/accessory/hydroponics
display_name = "armband, hydroponics"
path = /obj/item/clothing/accessory/armband/hydro
/datum/gear/accessory/medical
display_name = "armband, medical"
path = /obj/item/clothing/accessory/armband/med
/datum/gear/accessory/medical/cross
display_name = "armband, medic"
path = /obj/item/clothing/accessory/armband/med/cross
/datum/gear/accessory/science
display_name = "armband, science"
path = /obj/item/clothing/accessory/armband/science
/datum/gear/accessory/colored
/datum/gear/accessory/armband/colored
display_name = "armband"
path = /obj/item/clothing/accessory/armband/med/color
/datum/gear/accessory/colored/New()
/datum/gear/accessory/armband/colored/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
@@ -74,215 +60,109 @@
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/accessory/wcoat
display_name = "waistcoat"
display_name = "waistcoat selection"
path = /obj/item/clothing/accessory/wcoat
cost = 1
/datum/gear/accessory/wcoat/red
display_name = "waistcoat, red"
path = /obj/item/clothing/accessory/wcoat/red
/datum/gear/accessory/wcoat/grey
display_name = "waistcoat, grey"
path = /obj/item/clothing/accessory/wcoat/grey
/datum/gear/accessory/wcoat/brown
display_name = "waistcoat, brown"
path = /obj/item/clothing/accessory/wcoat/brown
/datum/gear/accessory/swvest
display_name = "sweatervest, black"
path = /obj/item/clothing/accessory/wcoat/swvest
cost = 1
/datum/gear/accessory/swvest/blue
display_name = "sweatervest, blue"
path = /obj/item/clothing/accessory/wcoat/swvest/blue
/datum/gear/accessory/swvest/red
display_name = "sweatervest, red"
path = /obj/item/clothing/accessory/wcoat/swvest/red
/datum/gear/accessory/wcoat/New()
..()
var/list/wcoats = list()
for(var/wcoat in typesof(/obj/item/clothing/accessory/wcoat))
var/obj/item/clothing/accessory/wcoat_type = wcoat
wcoats[initial(wcoat_type.name)] = wcoat_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(wcoats))
/datum/gear/accessory/holster
display_name = "holster, armpit"
path = /obj/item/clothing/accessory/holster/armpit
display_name = "holster selection (Security, CD, HoP)"
path = /obj/item/clothing/accessory/holster
allowed_roles = list("Colony Director", "Head of Personnel", "Security Officer", "Warden", "Head of Security","Detective")
/datum/gear/accessory/holster/hip
display_name = "holster, hip"
path = /obj/item/clothing/accessory/holster/hip
/datum/gear/accessory/holster/leg
display_name = "holster, leg"
path = /obj/item/clothing/accessory/holster/leg
/datum/gear/accessory/holster/waist
display_name = "holster, waist"
path = /obj/item/clothing/accessory/holster/waist
/datum/gear/accessory/holster/New()
..()
var/list/holsters = list()
for(var/holster in typesof(/obj/item/clothing/accessory/holster))
var/obj/item/clothing/accessory/holster_type = holster
holsters[initial(holster_type.name)] = holster_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(holsters))
/datum/gear/accessory/tie
display_name = "tie, black"
path = /obj/item/clothing/accessory/black
display_name = "tie selection"
path = /obj/item/clothing/accessory/tie
cost = 1
/datum/gear/accessory/tie/blue
display_name = "tie, blue"
path = /obj/item/clothing/accessory/blue
/datum/gear/accessory/tie/blue_clip
display_name = "tie, blue with clip"
path = /obj/item/clothing/accessory/blue_clip
/datum/gear/accessory/tie/blue_long
display_name = "tie, blue long"
path = /obj/item/clothing/accessory/blue_long
/datum/gear/accessory/tie/red
display_name = "tie, red"
path = /obj/item/clothing/accessory/red
/datum/gear/accessory/tie/red_clip
display_name = "tie, red with clip"
path = /obj/item/clothing/accessory/red_clip
/datum/gear/accessory/tie/red_long
display_name = "tie, red long"
path = /obj/item/clothing/accessory/red_long
/datum/gear/accessory/tie/yellow
display_name = "tie, yellow"
path = /obj/item/clothing/accessory/yellow
/datum/gear/accessory/tie/navy
display_name = "tie, navy blue"
path = /obj/item/clothing/accessory/navy
/datum/gear/accessory/tie/white
display_name = "tie, white"
path = /obj/item/clothing/accessory/white
/datum/gear/accessory/tie/horrible
display_name = "tie, socially disgraceful"
path = /obj/item/clothing/accessory/horrible
/datum/gear/accessory/tie/New()
..()
var/list/ties = list()
for(var/tie in typesof(/obj/item/clothing/accessory/tie))
var/obj/item/clothing/accessory/tie_type = tie
ties[initial(tie_type.name)] = tie_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(ties))
/datum/gear/accessory/scarf
display_name = "scarf"
display_name = "scarf selection"
path = /obj/item/clothing/accessory/scarf
cost = 1
/datum/gear/accessory/scarf/red
display_name = "scarf, red"
path = /obj/item/clothing/accessory/scarf/red
/datum/gear/accessory/scarf/New()
..()
var/list/scarfs = list()
for(var/scarf in typesof(/obj/item/clothing/accessory/scarf))
var/obj/item/clothing/accessory/scarf_type = scarf
scarfs[initial(scarf_type.name)] = scarf_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(scarfs))
/datum/gear/accessory/scarf/green
display_name = "scarf, green"
path = /obj/item/clothing/accessory/scarf/green
/datum/gear/accessory/jacket
display_name = "suit jacket selection"
path = /obj/item/clothing/accessory/jacket
cost = 1
/datum/gear/accessory/scarf/darkblue
display_name = "scarf, dark blue"
path = /obj/item/clothing/accessory/scarf/darkblue
/datum/gear/accessory/scarf/purple
display_name = "scarf, purple"
path = /obj/item/clothing/accessory/scarf/purple
/datum/gear/accessory/scarf/yellow
display_name = "scarf, yellow"
path = /obj/item/clothing/accessory/scarf/yellow
/datum/gear/accessory/scarf/orange
display_name = "scarf, orange"
path = /obj/item/clothing/accessory/scarf/orange
/datum/gear/accessory/scarf/lightblue
display_name = "scarf, light blue"
path = /obj/item/clothing/accessory/scarf/lightblue
/datum/gear/accessory/scarf/white
display_name = "scarf, white"
path = /obj/item/clothing/accessory/scarf/white
/datum/gear/accessory/scarf/black
display_name = "scarf, black"
path = /obj/item/clothing/accessory/scarf/black
/datum/gear/accessory/scarf/zebra
display_name = "scarf, zebra"
path = /obj/item/clothing/accessory/scarf/zebra
/datum/gear/accessory/scarf/christmas
display_name = "scarf, christmas"
path = /obj/item/clothing/accessory/scarf/christmas
/datum/gear/accessory/scarf/stripedred
display_name = "scarf, striped red"
path = /obj/item/clothing/accessory/stripedredscarf
/datum/gear/accessory/scarf/stripedgreen
display_name = "scarf, striped green"
path = /obj/item/clothing/accessory/stripedgreenscarf
/datum/gear/accessory/scarf/stripedblue
display_name = "scarf, striped blue"
path = /obj/item/clothing/accessory/stripedbluescarf
/datum/gear/accessory/suitjacket
display_name = "suit jacket, tan"
path = /obj/item/clothing/accessory/tan_jacket
/datum/gear/accessory/suitjacket/charcoal
display_name = "suit jacket, charcoal"
path = /obj/item/clothing/accessory/charcoal_jacket
/datum/gear/accessory/suitjacket/navy
display_name = "suit jacket, navy blue"
path = /obj/item/clothing/accessory/navy_jacket
/datum/gear/accessory/suitjacket/burgundy
display_name = "suit jacket, burgundy"
path = /obj/item/clothing/accessory/burgundy_jacket
/datum/gear/accessory/suitjacket/checkered
display_name = "suit jacket, checkered"
path = /obj/item/clothing/accessory/checkered_jacket
/datum/gear/accessory/jacket/New()
..()
var/list/jackets = list()
for(var/jacket in typesof(/obj/item/clothing/accessory/jacket))
var/obj/item/clothing/accessory/jacket_type = jacket
jackets[initial(jacket_type.name)] = jacket_type
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(jackets))
/datum/gear/accessory/suitvest
display_name = "suit vest"
path = /obj/item/clothing/accessory/vest
/datum/gear/accessory/brown_vest
display_name = "webbing, engineering"
display_name = "webbing, brown"
path = /obj/item/clothing/accessory/storage/brown_vest
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/black_vest
display_name = "webbing, security"
display_name = "webbing, black"
path = /obj/item/clothing/accessory/storage/black_vest
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/white_vest
display_name = "webbing, medical"
display_name = "webbing, white"
path = /obj/item/clothing/accessory/storage/white_vest
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/brown_drop_pouches
display_name = "drop pouches, engineering"
display_name = "drop pouches, brown"
path = /obj/item/clothing/accessory/storage/brown_drop_pouches
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/black_drop_pouches
display_name = "drop pouches, security"
display_name = "drop pouches, black"
path = /obj/item/clothing/accessory/storage/black_drop_pouches
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/white_drop_pouches
display_name = "drop pouches, medical"
display_name = "drop pouches, white"
path = /obj/item/clothing/accessory/storage/white_drop_pouches
allowed_roles = list("Station Engineer","Atmospheric Technician","Chief Engineer","Security Officer","Detective","Head of Security","Warden","Paramedic","Chief Medical Officer","Medical Doctor")
/datum/gear/accessory/fannypack
display_name = "fannypack selection"
cost = 2
path = /obj/item/weapon/storage/belt/fannypack
/datum/gear/accessory/fannypack/New()
..()
@@ -68,9 +68,9 @@
path = /obj/item/clothing/glasses/sunglasses/medhud/aviator/prescription
/datum/gear/eyes/meson
display_name = "Optical Meson Scanners (Engineering)"
display_name = "Optical Meson Scanners (Engineering, Science)"
path = /obj/item/clothing/glasses/meson
allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician")
allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director")
/datum/gear/eyes/meson/prescription
display_name = "Optical Meson Scanners, prescription (Engineering)"
@@ -115,4 +115,3 @@
/datum/gear/eyes/sun/prescriptionsun
display_name = "sunglasses, presciption (Security/Command)"
path = /obj/item/clothing/glasses/sunglasses/prescription
cost = 2
@@ -68,10 +68,34 @@
cost = 3
/datum/gear/gloves/forensic
display_name = "gloves, forensic"
display_name = "gloves, forensic (Detective)"
path = /obj/item/clothing/gloves/forensic
allowed_roles = list("Detective")
/datum/gear/gloves/fingerless
display_name = "fingerless gloves"
path = /obj/item/clothing/gloves/fingerless
path = /obj/item/clothing/gloves/fingerless
/datum/gear/gloves/ring
display_name = "ring selection"
description = "Choose from a number of rings."
path = /obj/item/clothing/gloves/ring
cost = 1
/datum/gear/gloves/ring/New()
..()
var/ringtype = list()
ringtype["CTI ring"] = /obj/item/clothing/gloves/ring/cti
ringtype["Mariner University ring"] = /obj/item/clothing/gloves/ring/mariner
ringtype["engagement ring"] = /obj/item/clothing/gloves/ring/engagement
ringtype["signet ring"] = /obj/item/clothing/gloves/ring/seal/signet
ringtype["masonic ring"] = /obj/item/clothing/gloves/ring/seal/mason
ringtype["ring, steel"] = /obj/item/clothing/gloves/ring/material/steel
ringtype["ring, iron"] = /obj/item/clothing/gloves/ring/material/iron
ringtype["ring, silver"] = /obj/item/clothing/gloves/ring/material/silver
ringtype["ring, gold"] = /obj/item/clothing/gloves/ring/material/gold
ringtype["ring, platinum"] = /obj/item/clothing/gloves/ring/material/platinum
ringtype["ring, glass"] = /obj/item/clothing/gloves/ring/material/glass
ringtype["ring, wood"] = /obj/item/clothing/gloves/ring/material/wood
ringtype["ring, plastic"] = /obj/item/clothing/gloves/ring/material/plastic
gear_tweaks += new/datum/gear_tweak/path(ringtype)
@@ -136,7 +136,6 @@
/datum/gear/head/cowboy
display_name = "cowboy, rodeo"
path = /obj/item/clothing/head/cowboy_hat
cost = 3
/datum/gear/head/cowboy/black
display_name = "cowboy, black"
@@ -268,6 +267,11 @@
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/head/kitty
display_name = "kitty ears"
path = /obj/item/clothing/head/kitty
/datum/gear/head/beanie
display_name = "beanie"
path = /obj/item/clothing/head/beanie
@@ -195,6 +195,10 @@
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/shoes/slippers
display_name = "bunny slippers"
path = /obj/item/clothing/shoes/slippers
/datum/gear/shoes/boots/winter
display_name = "winter boots"
path = /obj/item/clothing/shoes/boots/winter
@@ -227,7 +231,7 @@
/datum/gear/shoes/boots/winter/medical
display_name = "medical winter boots"
path = /obj/item/clothing/shoes/boots/winter/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/shoes/boots/winter/mining
display_name = "mining winter boots"
@@ -149,7 +149,7 @@
/datum/gear/suit/labcoat/emt
display_name = "labcoat, EMT (Medical)"
path = /obj/item/clothing/suit/storage/toggle/labcoat/emt
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/roles/surgical_apron
display_name = "surgical apron"
@@ -182,7 +182,7 @@
/datum/gear/suit/roles/poncho/medical
display_name = "poncho, medical"
path = /obj/item/clothing/accessory/poncho/roles/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/roles/poncho/engineering
display_name = "poncho, engineering"
@@ -199,6 +199,41 @@
path = /obj/item/clothing/accessory/poncho/roles/cargo
allowed_roles = list("Quartermaster","Cargo Technician")
/datum/gear/suit/roles/poncho/cloak/hos
display_name = "cloak, head of security"
path = /obj/item/clothing/accessory/poncho/roles/cloak/hos
allowed_roles = list("Head of Security")
/datum/gear/suit/roles/poncho/cloak/cmo
display_name = "cloak, chief medical officer"
path = /obj/item/clothing/accessory/poncho/roles/cloak/cmo
allowed_roles = list("Chief Medical Officer")
/datum/gear/suit/roles/poncho/cloak/ce
display_name = "cloak, chief engineer"
path = /obj/item/clothing/accessory/poncho/roles/cloak/ce
allowed_roles = list("Chief Engineer")
/datum/gear/suit/roles/poncho/cloak/rd
display_name = "cloak, research director"
path = /obj/item/clothing/accessory/poncho/roles/cloak/rd
allowed_roles = list("Research Director")
/datum/gear/suit/roles/poncho/cloak/qm
display_name = "cloak, quartermaster"
path = /obj/item/clothing/accessory/poncho/roles/cloak/qm
allowed_roles = list("Quartermaster")
/datum/gear/suit/roles/poncho/cloak/captain
display_name = "cloak, colony director"
path = /obj/item/clothing/accessory/poncho/roles/cloak/captain
allowed_roles = list("Colony Director")
/datum/gear/suit/roles/poncho/cloak/hop
display_name = "cloak, head of personnel"
path = /obj/item/clothing/accessory/poncho/roles/cloak/hop
allowed_roles = list("Head of Personnel")
/datum/gear/suit/unathi_robe
display_name = "roughspun robe"
path = /obj/item/clothing/suit/unathi/robe
@@ -257,7 +292,7 @@
/datum/gear/suit/wintercoat/medical
display_name = "winter coat, medical"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/wintercoat/science
display_name = "winter coat, science"
@@ -410,7 +445,7 @@
/datum/gear/suit/snowsuit/medical
display_name = "snowsuit, medical"
path = /obj/item/clothing/suit/storage/snowsuit/medical
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist")
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist")
/datum/gear/suit/snowsuit/science
display_name = "snowsuit, science"
@@ -243,7 +243,6 @@
/datum/gear/uniform/scrub
display_name = "scrubs selection"
path = /obj/item/clothing/under/rank/medical/scrubs
allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Roboticist")
/datum/gear/uniform/scrub/New()
..()
@@ -455,3 +454,7 @@
/datum/gear/uniform/red_swept_dress
display_name = "red swept dress"
path = /obj/item/clothing/under/dress/red_swept_dress
/datum/gear/uniform/bathrobe
display_name = "bathrobe"
path = /obj/item/clothing/under/bathrobe
@@ -30,14 +30,14 @@
name = "Flimsy"
desc = "You're more fragile than most, and have less of an ability to endure harm."
modifier_type = /datum/modifier/trait/flimsy
muturally_exclusive = list(/datum/trait/modifier/physical/frail)
mutually_exclusive = list(/datum/trait/modifier/physical/frail)
/datum/trait/modifier/physical/frail
name = "Frail"
desc = "Your body is very fragile, and has even less of an ability to endure harm."
modifier_type = /datum/modifier/trait/frail
muturally_exclusive = list(/datum/trait/modifier/physical/flimsy)
mutually_exclusive = list(/datum/trait/modifier/physical/flimsy)
/datum/trait/modifier/physical/haemophilia
@@ -51,10 +51,19 @@
// If a species lacking blood is added, it is suggested to add a check for them here.
return ..()
/datum/trait/modifier/physical/weak
name = "Weak"
desc = "A lack of physical strength causes a diminshed capability in close quarters combat."
modifier_type = /datum/modifier/trait/weak
mutually_exclusive = list(/datum/trait/modifier/physical/wimpy)
/datum/trait/modifier/physical/wimpy
name = "Wimpy"
desc = "An extreme lack of physical strength causes a greatly diminished capability in close quarters combat."
modifier_type = /datum/modifier/trait/wimpy
mutually_exclusive = list(/datum/trait/modifier/physical/weak)
/datum/trait/modifier/physical/inaccurate
@@ -68,6 +77,7 @@
/datum/trait/modifier/physical/high_metabolism
name = "High Metabolism"
modifier_type = /datum/modifier/trait/high_metabolism
mutually_exclusive = list(/datum/trait/modifier/physical/low_metabolism)
/datum/trait/modifier/physical/high_metabolism/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
if(setup.is_FBP())
@@ -78,6 +88,7 @@
/datum/trait/modifier/physical/low_metabolism
name = "Low Metabolism"
modifier_type = /datum/modifier/trait/low_metabolism
mutually_exclusive = list(/datum/trait/modifier/physical/high_metabolism)
/datum/trait/modifier/physical/low_metabolism/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
if(setup.is_FBP())
@@ -165,7 +176,7 @@
name = "Xenophobic"
desc = "The mind of the Alien is unknowable, and as such, their intentions cannot be known. You always watch the xenos closely, as they most certainly are watching you \
closely, waiting to strike."
muturally_exclusive = list(
mutually_exclusive = list(
/datum/trait/modifier/mental/humanphobe,
/datum/trait/modifier/mental/skrellphobe,
/datum/trait/modifier/mental/tajaraphobe,
@@ -177,36 +188,36 @@
/datum/trait/modifier/mental/humanphobe
name = "Human-phobic"
desc = "Boilerplate racism for monkeys goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
/datum/trait/modifier/mental/skrellphobe
name = "Skrell-phobic"
desc = "Boilerplate racism for squid goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
/datum/trait/modifier/mental/tajaraphobe
name = "Tajara-phobic"
desc = "Boilerplate racism for cats goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
/datum/trait/modifier/mental/unathiphobe
name = "Unathi-phobic"
desc = "Boilerplate racism for lizards goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
// Not sure why anyone would hate/fear these guys but for the sake of completeness here we are.
/datum/trait/modifier/mental/dionaphobe
name = "Diona-phobic"
desc = "Boilerplate racism for trees goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
/datum/trait/modifier/mental/teshariphobe
name = "Teshari-phobic"
desc = "Boilerplate racism for birds goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
/datum/trait/modifier/mental/prometheanphobe
name = "Promethean-phobic"
desc = "Boilerplate racism for jellos goes here."
muturally_exclusive = list(/datum/trait/modifier/mental/xenophobe)
mutually_exclusive = list(/datum/trait/modifier/mental/xenophobe)
*/
@@ -79,7 +79,7 @@ var/list/trait_categories = list() // The categories available for the trait men
if(invalidity)
invalid += "[invalidity] "
if(conflicts)
invalid += "This trait is muturally exclusive with [conflicts]."
invalid += "This trait is mutually exclusive with [conflicts]."
. += "<td width = 75%><font size=2><i>[T.desc]</i>\
[invalid ? "<font color='#FF0000'><br>Cannot take trait. Reason: [invalid]</font>":""]</font></td></tr>"
@@ -114,7 +114,7 @@ var/list/trait_categories = list() // The categories available for the trait men
var/conflicts = T.test_for_trait_conflict(pref.traits)
if(conflicts)
pref.traits -= trait_name
to_chat(preference_mob, "<span class='warning'>The [trait_name] trait is muturally exclusive with [conflicts].</span>")
to_chat(preference_mob, "<span class='warning'>The [trait_name] trait is mutually exclusive with [conflicts].</span>")
/datum/category_item/player_setup_item/traits/OnTopic(href, href_list, user)
if(href_list["toggle_trait"])
@@ -129,7 +129,7 @@ var/list/trait_categories = list() // The categories available for the trait men
var/conflicts = T.test_for_trait_conflict(pref.traits)
if(conflicts)
to_chat(user, "<span class='warning'>The [T.name] trait is muturally exclusive with [conflicts].</span>")
to_chat(user, "<span class='warning'>The [T.name] trait is mutually exclusive with [conflicts].</span>")
return TOPIC_NOACTION
pref.traits += T.name
@@ -143,7 +143,7 @@ var/list/trait_categories = list() // The categories available for the trait men
/datum/trait
var/name = null // Name to show on UI
var/desc = null // Description of what it does, also shown on UI.
var/list/muturally_exclusive = list() // List of trait types which cannot be taken alongside this trait.
var/list/mutually_exclusive = list() // List of trait types which cannot be taken alongside this trait.
var/category = null // What section to place this trait inside.
// Applies effects to the newly spawned mob.
@@ -156,16 +156,16 @@ var/list/trait_categories = list() // The categories available for the trait men
/datum/trait/proc/test_for_invalidity(var/datum/category_item/player_setup_item/traits/setup)
return null
// Checks muturally_exclusive. current_traits needs to be a list of strings.
// Checks mutually_exclusive. current_traits needs to be a list of strings.
// Returns null if everything is well, similar to the above proc. Otherwise returns an english_list() of conflicting traits.
/datum/trait/proc/test_for_trait_conflict(var/list/current_traits)
var/list/conflicts = list()
var/result
if(muturally_exclusive.len)
if(mutually_exclusive.len)
for(var/trait_name in current_traits)
var/datum/trait/T = trait_datums[trait_name]
if(T.type in muturally_exclusive)
if(T.type in mutually_exclusive)
conflicts.Add(T.name)
if(conflicts.len)