mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-30 15:38:02 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into vatborn
This commit is contained in:
@@ -385,26 +385,30 @@
|
||||
for(var/areatype in areas_without_camera)
|
||||
world << "* [areatype]"
|
||||
|
||||
/datum/admins/proc/cmd_admin_dress()
|
||||
/datum/admins/proc/cmd_admin_dress(input in getmobs())
|
||||
set category = "Fun"
|
||||
set name = "Select equipment"
|
||||
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = input("Select mob.", "Select equipment.") as null|anything in human_mob_list
|
||||
if(!H)
|
||||
var/target = getmobs()[input]
|
||||
if(!target)
|
||||
return
|
||||
|
||||
if(!ishuman(target))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
|
||||
var/decl/hierarchy/outfit/outfit = input("Select outfit.", "Select equipment.") as null|anything in outfits()
|
||||
if(!outfit)
|
||||
return
|
||||
|
||||
feedback_add_details("admin_verb","SEQ")
|
||||
dressup_human(H, outfit, TRUE)
|
||||
dressup_human(H, outfit, 1)
|
||||
|
||||
/proc/dressup_human(var/mob/living/carbon/human/H, var/decl/hierarchy/outfit/outfit, var/undress = TRUE)
|
||||
world << "dressup_human"
|
||||
/proc/dressup_human(var/mob/living/carbon/human/H, var/decl/hierarchy/outfit/outfit, var/undress = 1)
|
||||
if(!H || !outfit)
|
||||
return
|
||||
if(undress)
|
||||
|
||||
@@ -83,12 +83,12 @@
|
||||
if (!fqs)
|
||||
output += " <b>ERROR</b><br>"
|
||||
continue
|
||||
for (var/filter in fqs.devices)
|
||||
var/list/f = fqs.devices[filter]
|
||||
for (var/radio_filter in fqs.devices)
|
||||
var/list/f = fqs.devices[radio_filter]
|
||||
if (!f)
|
||||
output += " [filter]: ERROR<br>"
|
||||
output += " [radio_filter]: ERROR<br>"
|
||||
continue
|
||||
output += " [filter]: [f.len]<br>"
|
||||
output += " [radio_filter]: [f.len]<br>"
|
||||
for (var/device in f)
|
||||
if (isobj(device))
|
||||
output += " [device] ([device:x],[device:y],[device:z] in area [get_area(device:loc)])<br>"
|
||||
@@ -177,11 +177,11 @@
|
||||
set desc = "This searches all the active jobban entries for the current round and outputs the results to standard output."
|
||||
set category = "Debug"
|
||||
|
||||
var/filter = input("Contains what?","Filter") as text|null
|
||||
if(!filter)
|
||||
var/job_filter = input("Contains what?","Job Filter") as text|null
|
||||
if(!job_filter)
|
||||
return
|
||||
|
||||
usr << "<b>Jobbans active in this round.</b>"
|
||||
for(var/t in jobban_keylist)
|
||||
if(findtext(t, filter))
|
||||
if(findtext(t, job_filter))
|
||||
usr << "[t]"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -51,6 +51,10 @@ datum/preferences
|
||||
var/list/language_prefixes = list() //Kanguage prefix keys
|
||||
var/list/gear //Custom/fluff item loadout.
|
||||
var/list/traits //Traits which modifier characters for better or worse (mostly worse).
|
||||
var/synth_color = 0 //Lets normally uncolorable synth parts be colorable.
|
||||
var/r_synth //Used with synth_color to color synth parts that normaly can't be colored.
|
||||
var/g_synth //Same as above
|
||||
var/b_synth //Same as above
|
||||
|
||||
//Some faction information.
|
||||
var/home_system = "Unset" //System of birth.
|
||||
|
||||
@@ -170,6 +170,7 @@
|
||||
icon_state = O.icon_state
|
||||
set_dir(O.dir)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////
|
||||
//Gloves
|
||||
/obj/item/clothing/gloves
|
||||
name = "gloves"
|
||||
@@ -183,8 +184,11 @@
|
||||
siemens_coefficient = 0.75
|
||||
var/wired = 0
|
||||
var/obj/item/weapon/cell/cell = 0
|
||||
var/overgloves = 0
|
||||
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
|
||||
var/obj/item/clothing/gloves/ring = null //Covered ring
|
||||
var/mob/living/carbon/human/wearer = null //Used for covered rings when dropping
|
||||
var/glove_level = 2 //What "layer" the glove is on
|
||||
var/overgloves = 0 //Used by gauntlets and arm_guards
|
||||
body_parts_covered = HANDS
|
||||
slot_flags = SLOT_GLOVES
|
||||
attack_verb = list("challenged")
|
||||
@@ -201,6 +205,8 @@
|
||||
/obj/item/clothing/gloves/emp_act(severity)
|
||||
if(cell)
|
||||
cell.emp_act(severity)
|
||||
if(ring)
|
||||
ring.emp_act(severity)
|
||||
..()
|
||||
|
||||
// Called just before an attack_hand(), in mob/UnarmedAttack()
|
||||
@@ -225,6 +231,59 @@
|
||||
species_restricted -= "Tajara"
|
||||
return
|
||||
*/
|
||||
|
||||
/obj/item/clothing/gloves/mob_can_equip(mob/user, slot)
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(slot && slot == slot_gloves)
|
||||
if(istype(H.gloves, /obj/item/clothing/gloves/ring))
|
||||
ring = H.gloves
|
||||
if(ring.glove_level >= src.glove_level)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
ring = null
|
||||
return 0
|
||||
else
|
||||
H.drop_from_inventory(ring) //Remove the ring (or other under-glove item in the hand slot?) so you can put on the gloves.
|
||||
ring.forceMove(src)
|
||||
to_chat(user, "You slip \the [src] on over \the [src.ring].")
|
||||
else
|
||||
ring = null
|
||||
|
||||
if(!..())
|
||||
if(ring) //Put the ring back on if the check fails.
|
||||
if(H.equip_to_slot_if_possible(ring, slot_gloves))
|
||||
src.ring = null
|
||||
return 0
|
||||
|
||||
wearer = H //TODO clean this when magboots are cleaned
|
||||
return 1
|
||||
|
||||
/obj/item/clothing/gloves/dropped()
|
||||
..()
|
||||
|
||||
if(!wearer)
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = wearer
|
||||
if(ring && istype(H))
|
||||
if(!H.equip_to_slot_if_possible(ring, slot_gloves))
|
||||
ring.forceMove(get_turf(src))
|
||||
src.ring = null
|
||||
wearer = null
|
||||
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
//Rings
|
||||
|
||||
/obj/item/clothing/gloves/ring
|
||||
name = "ring"
|
||||
w_class = ITEMSIZE_TINY
|
||||
icon = 'icons/obj/clothing/rings.dmi'
|
||||
gender = NEUTER
|
||||
species_restricted = list("exclude", "Diona")
|
||||
siemens_coefficient = 1
|
||||
glove_level = 1
|
||||
fingerprint_chance = 100
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
//Head
|
||||
/obj/item/clothing/head
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
overgloves = 1
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
|
||||
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot)
|
||||
if(..()) //This will only run if no other problems occured when equiping.
|
||||
if(H.wear_suit)
|
||||
if(H.wear_suit.body_parts_covered & ARMS)
|
||||
H << "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>"
|
||||
to_chat(H, "<span class='warning'>You can't wear \the [src] with \the [H.wear_suit], it's in the way.</span>")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
/obj/item/clothing/gloves/gauntlets //Used to cover gloves, otherwise act as gloves.
|
||||
name = "gauntlets"
|
||||
desc = "These gloves go over regular gloves."
|
||||
glove_level = 3
|
||||
overgloves = 1
|
||||
var/obj/item/clothing/gloves/gloves = null //Undergloves
|
||||
var/mob/living/carbon/human/wearer = null //For glove procs
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/mob_can_equip(mob/user)
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.gloves)
|
||||
gloves = H.gloves
|
||||
if(gloves.overgloves)
|
||||
user << "You are unable to wear \the [src] as \the [H.gloves] are in the way."
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
|
||||
gloves = null
|
||||
return 0
|
||||
H.drop_from_inventory(gloves)
|
||||
@@ -30,7 +30,7 @@
|
||||
gloves = null
|
||||
return 0
|
||||
if(gloves)
|
||||
user << "You slip \the [src] on over \the [gloves]."
|
||||
to_chat(user, "You slip \the [src] on over \the [gloves].")
|
||||
wearer = H
|
||||
return 1
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
if(gloves)
|
||||
if(!H.equip_to_slot_if_possible(gloves, slot_gloves))
|
||||
gloves.forceMove(get_turf(src))
|
||||
if(ring)
|
||||
gloves.ring = ring
|
||||
src.gloves = null
|
||||
wearer = null
|
||||
..()
|
||||
wearer = null
|
||||
@@ -31,12 +31,19 @@
|
||||
//Chaplain
|
||||
/obj/item/clothing/head/chaplain_hood
|
||||
name = "chaplain's hood"
|
||||
desc = "It's hood that covers the head. It keeps you warm during the space winters."
|
||||
desc = "It's a hood that covers the head. It keeps you warm during the space winters."
|
||||
icon_state = "chaplain_hood"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
|
||||
flags_inv = BLOCKHAIR
|
||||
body_parts_covered = HEAD
|
||||
|
||||
//Chaplain but spookier
|
||||
/obj/item/clothing/head/chaplain_hood/whiteout
|
||||
name = "white hood"
|
||||
desc = "It's a generic white hood. Very spooky."
|
||||
icon_state = "whiteout_hood"
|
||||
item_state_slots = list(slot_r_hand_str = "beret_white", slot_l_hand_str = "beret_white")
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/head/nun_hood
|
||||
name = "nun hood"
|
||||
|
||||
@@ -15,17 +15,17 @@
|
||||
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 75, rad = 0)
|
||||
|
||||
/obj/item/clothing/mask/gas/filter_air(datum/gas_mixture/air)
|
||||
var/datum/gas_mixture/filtered = new
|
||||
var/datum/gas_mixture/gas_filtered = new
|
||||
|
||||
for(var/g in filtered_gases)
|
||||
if(air.gas[g])
|
||||
filtered.gas[g] = air.gas[g] * gas_filter_strength
|
||||
air.gas[g] -= filtered.gas[g]
|
||||
gas_filtered.gas[g] = air.gas[g] * gas_filter_strength
|
||||
air.gas[g] -= gas_filtered.gas[g]
|
||||
|
||||
air.update_values()
|
||||
filtered.update_values()
|
||||
gas_filtered.update_values()
|
||||
|
||||
return filtered
|
||||
return gas_filtered
|
||||
|
||||
/obj/item/clothing/mask/gas/half
|
||||
name = "face mask"
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
/////////////////////////////////////////
|
||||
//Material Rings
|
||||
/obj/item/clothing/gloves/ring/material
|
||||
icon = 'icons/obj/clothing/rings.dmi'
|
||||
icon_state = "material"
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/New(var/newloc, var/new_material)
|
||||
..(newloc)
|
||||
if(!new_material)
|
||||
new_material = DEFAULT_WALL_MATERIAL
|
||||
material = get_material_by_name(new_material)
|
||||
if(!istype(material))
|
||||
qdel(src)
|
||||
return
|
||||
name = "[material.display_name] ring"
|
||||
desc = "A ring made from [material.display_name]."
|
||||
color = material.icon_colour
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/get_material()
|
||||
return material
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/wood/New(var/newloc)
|
||||
..(newloc, "wood")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/plastic/New(var/newloc)
|
||||
..(newloc, "plastic")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/iron/New(var/newloc)
|
||||
..(newloc, "iron")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/steel/New(var/newloc)
|
||||
..(newloc, "steel")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/silver/New(var/newloc)
|
||||
..(newloc, "silver")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/gold/New(var/newloc)
|
||||
..(newloc, "gold")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/platinum/New(var/newloc)
|
||||
..(newloc, "platinum")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/phoron/New(var/newloc)
|
||||
..(newloc, "phoron")
|
||||
|
||||
/obj/item/clothing/gloves/ring/material/glass/New(var/newloc)
|
||||
..(newloc, "glass")
|
||||
@@ -0,0 +1,85 @@
|
||||
/////////////////////////////////////////
|
||||
//Standard Rings
|
||||
/obj/item/clothing/gloves/ring/engagement
|
||||
name = "engagement ring"
|
||||
desc = "An engagement ring. It certainly looks expensive."
|
||||
icon_state = "diamond"
|
||||
|
||||
/obj/item/clothing/gloves/ring/engagement/attack_self(mob/user)
|
||||
user.visible_message("<span class='warning'>\The [user] gets down on one knee, presenting \the [src].</span>","<span class='warning'>You get down on one knee, presenting \the [src].</span>")
|
||||
|
||||
/obj/item/clothing/gloves/ring/cti
|
||||
name = "CTI ring"
|
||||
desc = "A ring commemorating graduation from CTI."
|
||||
icon_state = "cti-grad"
|
||||
|
||||
/obj/item/clothing/gloves/ring/mariner
|
||||
name = "Mariner University ring"
|
||||
desc = "A ring commemorating graduation from Mariner University."
|
||||
icon_state = "mariner-grad"
|
||||
|
||||
|
||||
/////////////////////////////////////////
|
||||
//Reagent Rings
|
||||
|
||||
/obj/item/clothing/gloves/ring/reagent
|
||||
flags = OPENCONTAINER
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
|
||||
|
||||
/obj/item/clothing/gloves/ring/reagent/New()
|
||||
..()
|
||||
create_reagents(15)
|
||||
|
||||
/obj/item/clothing/gloves/ring/reagent/equipped(var/mob/living/carbon/human/H)
|
||||
..()
|
||||
if(istype(H) && H.gloves==src)
|
||||
|
||||
if(reagents.total_volume)
|
||||
to_chat(H, "<span class='danger'>You feel a prick as you slip on \the [src].</span>")
|
||||
if(H.reagents)
|
||||
var/contained_reagents = reagents.get_reagents()
|
||||
var/trans = reagents.trans_to_mob(H, 15, CHEM_BLOOD)
|
||||
admin_inject_log(usr, H, src, contained_reagents, trans)
|
||||
return
|
||||
|
||||
//Sleepy Ring
|
||||
/obj/item/clothing/gloves/ring/reagent/sleepy
|
||||
name = "silver ring"
|
||||
desc = "A ring made from what appears to be silver."
|
||||
icon_state = "material"
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
||||
|
||||
/obj/item/clothing/gloves/ring/reagent/sleepy/New()
|
||||
..()
|
||||
reagents.add_reagent(/datum/reagent/chloralhydrate, 15) // Less than a sleepy-pen, but still enough to knock someone out
|
||||
|
||||
/////////////////////////////////////////
|
||||
//Seals and Signet Rings
|
||||
/obj/item/clothing/gloves/ring/seal/secgen
|
||||
name = "Secretary-General's official seal"
|
||||
desc = "The official seal of the Secretary-General of the Sol Central Government, featured prominently on a silver ring."
|
||||
icon_state = "seal-secgen"
|
||||
|
||||
/obj/item/clothing/gloves/ring/seal/mason
|
||||
name = "masonic ring"
|
||||
desc = "The Square and Compasses feature prominently on this Masonic ring."
|
||||
icon_state = "seal-masonic"
|
||||
|
||||
/obj/item/clothing/gloves/ring/seal/signet
|
||||
name = "signet ring"
|
||||
desc = "A signet ring, for when you're too sophisticated to sign letters."
|
||||
icon_state = "seal-signet"
|
||||
var/nameset = 0
|
||||
|
||||
/obj/item/clothing/gloves/ring/seal/signet/attack_self(mob/user)
|
||||
if(nameset)
|
||||
to_chat(user, "<span class='notice'>The [src] has already been claimed!</span>")
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You claim the [src] as your own!</span>")
|
||||
change_name(user)
|
||||
nameset = 1
|
||||
|
||||
/obj/item/clothing/gloves/ring/seal/signet/proc/change_name(var/signet_name = "Unknown")
|
||||
name = "[signet_name]'s signet ring"
|
||||
desc = "A signet ring belonging to [signet_name], for when you're too sophisticated to sign letters."
|
||||
@@ -36,13 +36,14 @@
|
||||
user.update_inv_shoes() //so our mob-overlays update
|
||||
user.update_action_buttons()
|
||||
|
||||
/obj/item/clothing/shoes/magboots/mob_can_equip(mob/user)
|
||||
/obj/item/clothing/shoes/magboots/mob_can_equip(mob/user, slot)
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
if(H.shoes)
|
||||
shoes = H.shoes
|
||||
if(shoes.overshoes)
|
||||
user << "You are unable to wear \the [src] as \the [H.shoes] are in the way."
|
||||
if(slot && slot == slot_shoes)
|
||||
to_chat(user, "You are unable to wear \the [src] as \the [H.shoes] are in the way.")
|
||||
shoes = null
|
||||
return 0
|
||||
H.drop_from_inventory(shoes) //Remove the old shoes so you can put on the magboots.
|
||||
@@ -55,7 +56,8 @@
|
||||
return 0
|
||||
|
||||
if (shoes)
|
||||
user << "You slip \the [src] on over \the [shoes]."
|
||||
if(slot && slot == slot_shoes)
|
||||
to_chat(user, "You slip \the [src] on over \the [shoes].")
|
||||
set_slowdown()
|
||||
wearer = H
|
||||
return 1
|
||||
|
||||
@@ -39,6 +39,15 @@
|
||||
hoodtype = /obj/item/clothing/head/chaplain_hood
|
||||
allowed = list (/obj/item/weapon/storage/bible)
|
||||
|
||||
//Chaplain but spookier
|
||||
/obj/item/clothing/suit/storage/hooded/chaplain_hoodie/whiteout
|
||||
name = "white robe"
|
||||
desc = "A long, flowing white robe. It looks comfortable, but not very warm."
|
||||
icon_state = "whiteout_robe"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_white", slot_l_hand_str = "suit_white")
|
||||
flags_inv = HIDEJUMPSUIT|HIDETIE|HIDEHOLSTER
|
||||
hoodtype = /obj/item/clothing/head/chaplain_hood/whiteout
|
||||
|
||||
//Chaplain
|
||||
/obj/item/clothing/suit/nun
|
||||
name = "nun robe"
|
||||
|
||||
@@ -594,6 +594,12 @@ obj/item/clothing/suit/storage/toggle/peacoat
|
||||
icon_state = "smw_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_black", slot_l_hand_str = "suit_black")
|
||||
|
||||
/obj/item/clothing/suit/storage/toggle/hoodie/nrti
|
||||
name = "New Reykjavik Technical Institute hoodie"
|
||||
desc = "A warm, gray sweatshirt. It bears the letters NRT on the back, in reference to Sif's premiere technical institute."
|
||||
icon_state = "nrti_hoodie"
|
||||
item_state_slots = list(slot_r_hand_str = "suit_grey", slot_l_hand_str = "suit_grey")
|
||||
|
||||
/obj/item/clothing/suit/whitedress
|
||||
name = "white dress"
|
||||
desc = "A fancy dress."
|
||||
|
||||
@@ -80,51 +80,51 @@
|
||||
return //we aren't an object on the ground so don't call parent
|
||||
..()
|
||||
|
||||
/obj/item/clothing/accessory/blue
|
||||
/obj/item/clothing/accessory/tie
|
||||
name = "blue tie"
|
||||
icon_state = "bluetie"
|
||||
|
||||
/obj/item/clothing/accessory/red
|
||||
/obj/item/clothing/accessory/tie/red
|
||||
name = "red tie"
|
||||
icon_state = "redtie"
|
||||
|
||||
/obj/item/clothing/accessory/blue_clip
|
||||
/obj/item/clothing/accessory/tie/blue_clip
|
||||
name = "blue tie with a clip"
|
||||
icon_state = "bluecliptie"
|
||||
|
||||
/obj/item/clothing/accessory/blue_long
|
||||
/obj/item/clothing/accessory/tie/blue_long
|
||||
name = "blue long tie"
|
||||
icon_state = "bluelongtie"
|
||||
|
||||
/obj/item/clothing/accessory/red_clip
|
||||
/obj/item/clothing/accessory/tie/red_clip
|
||||
name = "red tie with a clip"
|
||||
icon_state = "redcliptie"
|
||||
|
||||
/obj/item/clothing/accessory/red_long
|
||||
/obj/item/clothing/accessory/tie/red_long
|
||||
name = "red long tie"
|
||||
icon_state = "redlongtie"
|
||||
|
||||
/obj/item/clothing/accessory/black
|
||||
/obj/item/clothing/accessory/tie/black
|
||||
name = "black tie"
|
||||
icon_state = "blacktie"
|
||||
|
||||
/obj/item/clothing/accessory/darkgreen
|
||||
/obj/item/clothing/accessory/tie/darkgreen
|
||||
name = "dark green tie"
|
||||
icon_state = "dgreentie"
|
||||
|
||||
/obj/item/clothing/accessory/yellow
|
||||
/obj/item/clothing/accessory/tie/yellow
|
||||
name = "yellow tie"
|
||||
icon_state = "yellowtie"
|
||||
|
||||
/obj/item/clothing/accessory/navy
|
||||
/obj/item/clothing/accessory/tie/navy
|
||||
name = "navy tie"
|
||||
icon_state = "navytie"
|
||||
|
||||
/obj/item/clothing/accessory/white
|
||||
/obj/item/clothing/accessory/tie/white
|
||||
name = "white tie"
|
||||
icon_state = "whitetie"
|
||||
|
||||
/obj/item/clothing/accessory/horrible
|
||||
/obj/item/clothing/accessory/tie/horrible
|
||||
name = "horrible tie"
|
||||
desc = "A neosilk clip-on tie. This one is disgusting."
|
||||
icon_state = "horribletie"
|
||||
@@ -237,17 +237,14 @@
|
||||
//Scarves
|
||||
|
||||
/obj/item/clothing/accessory/scarf
|
||||
name = "scarf"
|
||||
name = "green scarf"
|
||||
desc = "A stylish scarf. The perfect winter accessory for those with a keen fashion sense, and those who just can't handle a cold breeze on their necks."
|
||||
icon_state = "greenscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/red
|
||||
name = "red scarf"
|
||||
icon_state = "redscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/green
|
||||
name = "green scarf"
|
||||
icon_state = "greenscarf"
|
||||
|
||||
/obj/item/clothing/accessory/scarf/darkblue
|
||||
name = "dark blue scarf"
|
||||
icon_state = "darkbluescarf"
|
||||
@@ -284,14 +281,14 @@
|
||||
name = "christmas scarf"
|
||||
icon_state = "christmasscarf"
|
||||
|
||||
/obj/item/clothing/accessory/stripedredscarf
|
||||
/obj/item/clothing/accessory/scarf/stripedred
|
||||
name = "striped red scarf"
|
||||
icon_state = "stripedredscarf"
|
||||
|
||||
/obj/item/clothing/accessory/stripedgreenscarf
|
||||
/obj/item/clothing/accessory/scarf/stripedgreen
|
||||
name = "striped green scarf"
|
||||
icon_state = "stripedgreenscarf"
|
||||
|
||||
/obj/item/clothing/accessory/stripedbluescarf
|
||||
/obj/item/clothing/accessory/scarf/stripedblue
|
||||
name = "striped blue scarf"
|
||||
icon_state = "stripedbluescarf"
|
||||
|
||||
@@ -3,27 +3,27 @@
|
||||
desc = "Slick black suit vest."
|
||||
icon_state = "det_vest"
|
||||
|
||||
/obj/item/clothing/accessory/tan_jacket
|
||||
/obj/item/clothing/accessory/jacket/
|
||||
name = "tan suit jacket"
|
||||
desc = "Cozy suit jacket."
|
||||
icon_state = "tan_jacket"
|
||||
|
||||
/obj/item/clothing/accessory/charcoal_jacket
|
||||
/obj/item/clothing/accessory/jacket/charcoal
|
||||
name = "charcoal suit jacket"
|
||||
desc = "Strict suit jacket."
|
||||
icon_state = "charcoal_jacket"
|
||||
|
||||
/obj/item/clothing/accessory/navy_jacket
|
||||
/obj/item/clothing/accessory/jacket/navy
|
||||
name = "navy suit jacket"
|
||||
desc = "Official suit jacket."
|
||||
icon_state = "navy_jacket"
|
||||
|
||||
/obj/item/clothing/accessory/burgundy_jacket
|
||||
/obj/item/clothing/accessory/jacket/burgundy
|
||||
name = "burgundy suit jacket"
|
||||
desc = "Expensive suit jacket."
|
||||
icon_state = "burgundy_jacket"
|
||||
|
||||
/obj/item/clothing/accessory/checkered_jacket
|
||||
/obj/item/clothing/accessory/jacket/checkered
|
||||
name = "checkered suit jacket"
|
||||
desc = "Lucky suit jacket."
|
||||
icon_state = "checkered_jacket"
|
||||
@@ -115,6 +115,58 @@
|
||||
icon_state = "cargoponcho"
|
||||
item_state = "cargoponcho"
|
||||
|
||||
/*
|
||||
* Cloak
|
||||
*/
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak
|
||||
name = "brown cloak"
|
||||
desc = "An elaborate brown cloak."
|
||||
icon_state = "qmcloak"
|
||||
item_state = "qmcloak"
|
||||
body_parts_covered = null
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/ce
|
||||
name = "chief engineer's cloak"
|
||||
desc = "An elaborate cloak worn by the chief engineer."
|
||||
icon_state = "cecloak"
|
||||
item_state = "cecloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/cmo
|
||||
name = "chief medical officer's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the chief medical officer."
|
||||
icon_state = "cmocloak"
|
||||
item_state = "cmocloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/hop
|
||||
name = "head of personnel's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the head of personnel."
|
||||
icon_state = "hopcloak"
|
||||
item_state = "hopcloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/rd
|
||||
name = "research director's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the research director."
|
||||
icon_state = "rdcloak"
|
||||
item_state = "rdcloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/qm
|
||||
name = "quartermaster's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the quartermaster."
|
||||
icon_state = "qmcloak"
|
||||
item_state = "qmcloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/hos
|
||||
name = "head of security's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the head of security."
|
||||
icon_state = "hoscloak"
|
||||
item_state = "hoscloak"
|
||||
|
||||
/obj/item/clothing/accessory/poncho/roles/cloak/captain
|
||||
name = "colony director's cloak"
|
||||
desc = "An elaborate cloak meant to be worn by the colony director."
|
||||
icon_state = "capcloak"
|
||||
item_state = "capcloak"
|
||||
|
||||
/obj/item/clothing/accessory/hawaii
|
||||
name = "flower-pattern shirt"
|
||||
desc = "You probably need some welder googles to look at this."
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
icon_state = "internalaffairs"
|
||||
item_state_slots = list(slot_r_hand_str = "ba_suit", slot_l_hand_str = "ba_suit")
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/black)
|
||||
|
||||
/obj/item/clothing/under/rank/internalaffairs/skirt
|
||||
desc = "The plain, professional attire of an Internal Affairs Agent. The top button is sewn shut."
|
||||
@@ -156,7 +156,7 @@
|
||||
desc = "A classy suit."
|
||||
icon_state = "bluesuit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/red)
|
||||
|
||||
/obj/item/clothing/under/lawyer/bluesuit/skirt
|
||||
name = "blue skirt suit"
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
armor = list(melee = 10, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
siemens_coefficient = 0.9
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/blue_clip)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/blue_clip)
|
||||
|
||||
/*
|
||||
/obj/item/clothing/under/det/verb/rollup()
|
||||
@@ -89,13 +89,13 @@
|
||||
/obj/item/clothing/under/det/grey
|
||||
icon_state = "detective2"
|
||||
desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks."
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red_long)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/red_long)
|
||||
|
||||
/obj/item/clothing/under/det/black
|
||||
icon_state = "detective3"
|
||||
item_state_slots = list(slot_r_hand_str = "sl_suit", slot_l_hand_str = "sl_suit")
|
||||
desc = "An immaculate white dress shirt, paired with a pair of dark grey dress pants, a red tie, and a charcoal vest."
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/vest)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/red_long, /obj/item/clothing/accessory/vest)
|
||||
|
||||
/obj/item/clothing/under/det/corporate
|
||||
name = "detective's jumpsuit"
|
||||
@@ -106,12 +106,12 @@
|
||||
/obj/item/clothing/under/det/waistcoat
|
||||
icon_state = "detective"
|
||||
desc = "A rumpled white dress shirt paired with well-worn grey slacks, complete with a blue striped tie, faux-gold tie clip, and waistcoat."
|
||||
starting_accessories = list(/obj/item/clothing/accessory/blue_clip, /obj/item/clothing/accessory/wcoat)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/blue_clip, /obj/item/clothing/accessory/wcoat)
|
||||
|
||||
/obj/item/clothing/under/det/grey/waistcoat
|
||||
icon_state = "detective2"
|
||||
desc = "A serious-looking tan dress shirt paired with freshly-pressed black slacks, complete with a red striped tie and waistcoat."
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red_long, /obj/item/clothing/accessory/wcoat)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/red_long, /obj/item/clothing/accessory/wcoat)
|
||||
|
||||
/obj/item/clothing/under/det/skirt
|
||||
name = "detective's skirt"
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
icon_state = "greensuit"
|
||||
item_state_slots = list(slot_r_hand_str = "centcom", slot_l_hand_str = "centcom")
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/darkgreen)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/darkgreen)
|
||||
|
||||
/obj/item/clothing/under/gov/skirt
|
||||
name = "Green formal skirt uniform"
|
||||
@@ -161,7 +161,7 @@
|
||||
icon_state = "gentlesuit"
|
||||
item_state_slots = list(slot_r_hand_str = "grey", slot_l_hand_str = "grey")
|
||||
rolled_sleeves = 0
|
||||
starting_accessories = list(/obj/item/clothing/accessory/white, /obj/item/clothing/accessory/wcoat/gentleman)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/white, /obj/item/clothing/accessory/wcoat/gentleman)
|
||||
|
||||
/obj/item/clothing/under/gentlesuit/skirt
|
||||
name = "lady's suit"
|
||||
@@ -472,7 +472,7 @@
|
||||
desc = "A charcoal suit and red tie. Very professional."
|
||||
icon_state = "charcoal_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/navy, /obj/item/clothing/accessory/charcoal_jacket)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/navy, /obj/item/clothing/accessory/jacket/charcoal)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/charcoal/skirt
|
||||
name = "charcoal skirt"
|
||||
@@ -483,7 +483,7 @@
|
||||
desc = "A navy suit and red tie, intended for the station's finest."
|
||||
icon_state = "navy_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_blue", slot_l_hand_str = "lawyer_blue")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/red, /obj/item/clothing/accessory/navy_jacket)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/red, /obj/item/clothing/accessory/jacket/navy)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/navy/skirt
|
||||
name = "navy skirt"
|
||||
@@ -494,7 +494,7 @@
|
||||
desc = "A burgundy suit and black tie. Somewhat formal."
|
||||
icon_state = "burgundy_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_red", slot_l_hand_str = "lawyer_red")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/burgundy_jacket)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/black, /obj/item/clothing/accessory/jacket/burgundy)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/burgundy/skirt
|
||||
name = "burgundy skirt"
|
||||
@@ -505,7 +505,7 @@
|
||||
desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?"
|
||||
icon_state = "checkered_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "lawyer_black", slot_l_hand_str = "lawyer_black")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/black, /obj/item/clothing/accessory/checkered_jacket)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/black, /obj/item/clothing/accessory/jacket/checkered)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/checkered/skirt
|
||||
name = "checkered skirt"
|
||||
@@ -516,7 +516,7 @@
|
||||
desc = "A tan suit. Smart, but casual."
|
||||
icon_state = "tan_suit"
|
||||
item_state_slots = list(slot_r_hand_str = "tan_suit", slot_l_hand_str = "tan_suit")
|
||||
starting_accessories = list(/obj/item/clothing/accessory/yellow, /obj/item/clothing/accessory/tan_jacket)
|
||||
starting_accessories = list(/obj/item/clothing/accessory/tie/yellow, /obj/item/clothing/accessory/jacket)
|
||||
|
||||
/obj/item/clothing/under/suit_jacket/tan/skirt
|
||||
name = "tan skirt"
|
||||
|
||||
@@ -222,6 +222,8 @@
|
||||
existing_item = M.wear_id
|
||||
else if(citem.item_path == /obj/item/device/pda)
|
||||
existing_item = locate(/obj/item/device/pda) in M.contents
|
||||
else if(citem.item_path == /obj/item/weapon/storage/backpack)
|
||||
existing_item = locate(/obj/item/weapon/storage/backpack) in M.contents
|
||||
|
||||
// Spawn and equip the item.
|
||||
if(existing_item)
|
||||
|
||||
@@ -127,7 +127,7 @@
|
||||
It can be controlled from an Air Alarm. It can be configured to drain all air rapidly with a 'panic syphon' from an air alarm."
|
||||
|
||||
//Omni filters
|
||||
/obj/machinery/atmospherics/omni/filter
|
||||
/obj/machinery/atmospherics/omni/atmos_filter
|
||||
description_info = "Filters gas from a custom input direction, with up to two filtered outputs and a 'everything else' \
|
||||
output. The filtered output's arrows glow orange."
|
||||
|
||||
|
||||
@@ -29,4 +29,6 @@ var/global/list/description_icons = list(
|
||||
"power cell" = image(icon='icons/obj/power.dmi',icon_state="hcell"),
|
||||
"device cell" = image(icon='icons/obj/power.dmi',icon_state="dcell"),
|
||||
"weapon cell" = image(icon='icons/obj/power.dmi',icon_state="wcell"),
|
||||
|
||||
"hatchet" = image(icon='icons/obj/weapons.dmi',icon_state="hatchet"),
|
||||
)
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
recipes += new/datum/stack_recipe("[display_name] spoon", /obj/item/weapon/material/kitchen/utensil/spoon/plastic, 1, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] armor plate", /obj/item/weapon/material/armor_plating, 1, time = 20, on_floor = 1, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] grave marker", /obj/item/weapon/material/gravemarker, 5, time = 50, supplied_material = "[name]")
|
||||
recipes += new/datum/stack_recipe("[display_name] ring", /obj/item/clothing/gloves/ring/material, 1, on_floor = 1, supplied_material = "[name]")
|
||||
|
||||
|
||||
if(integrity>=50)
|
||||
recipes += new/datum/stack_recipe("[display_name] door", /obj/structure/simple_door, 10, one_per_turf = 1, on_floor = 1, supplied_material = "[name]")
|
||||
@@ -137,6 +139,9 @@
|
||||
recipes += new/datum/stack_recipe("wooden bucket", /obj/item/weapon/reagent_containers/glass/bucket/wood, 2, time = 4, one_per_turf = 0, on_floor = 0)
|
||||
recipes += new/datum/stack_recipe("coilgun stock", /obj/item/weapon/coilgun_assembly, 5)
|
||||
|
||||
/material/wood/log/generate_recipes()
|
||||
return // Feel free to add log-only recipes here later if desired.
|
||||
|
||||
/material/cardboard/generate_recipes()
|
||||
..()
|
||||
recipes += new/datum/stack_recipe("box", /obj/item/weapon/storage/box)
|
||||
|
||||
@@ -203,6 +203,35 @@
|
||||
icon_state = "sheet-wood"
|
||||
default_type = "wood"
|
||||
|
||||
/obj/item/stack/material/log
|
||||
name = "log"
|
||||
icon_state = "sheet-log"
|
||||
default_type = "log"
|
||||
no_variants = FALSE
|
||||
color = "#824B28"
|
||||
max_amount = 25
|
||||
w_class = ITEMSIZE_HUGE
|
||||
|
||||
/obj/item/stack/material/log/sif
|
||||
name = "alien log"
|
||||
color = "#0099cc"
|
||||
|
||||
/obj/item/stack/material/log/attackby(var/obj/item/W, var/mob/user)
|
||||
if(!istype(W))
|
||||
return ..()
|
||||
if(W.sharp && W.edge && use(1))
|
||||
to_chat(user, "<span class='notice'>You cut up a log into planks.</span>")
|
||||
playsound(get_turf(src), 'sound/effects/woodcutting.ogg', 50, 1)
|
||||
var/obj/item/stack/material/wood/existing_wood = locate() in user.loc
|
||||
var/obj/item/stack/material/wood/new_wood = new(user.loc)
|
||||
new_wood.amount = 2
|
||||
if(existing_wood)
|
||||
if(new_wood.transfer_to(existing_wood))
|
||||
to_chat(user, "<span class='notice'>You add the newly-formed wood to the stack. It now contains [existing_wood.amount] planks.</span>")
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/stack/material/cloth
|
||||
name = "cloth"
|
||||
icon_state = "sheet-cloth"
|
||||
|
||||
@@ -680,6 +680,18 @@ var/list/name_to_material
|
||||
sheet_singular_name = "plank"
|
||||
sheet_plural_name = "planks"
|
||||
|
||||
/material/wood/log
|
||||
name = "log"
|
||||
icon_base = "log"
|
||||
stack_type = /obj/item/stack/material/log
|
||||
sheet_singular_name = "log"
|
||||
sheet_plural_name = "logs"
|
||||
|
||||
/material/wood/log/sif
|
||||
name = "alien log"
|
||||
icon_colour = "#0099cc" // Cyan-ish
|
||||
stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2)
|
||||
|
||||
/material/wood/holographic
|
||||
name = "holowood"
|
||||
display_name = "wood"
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
if(46 to 50)
|
||||
new/obj/item/clothing/under/chameleon(src)
|
||||
for(var/i = 0, i < 7, i++)
|
||||
new/obj/item/clothing/accessory/horrible(src)
|
||||
new/obj/item/clothing/accessory/tie/horrible(src)
|
||||
if(51 to 52) // Uncommon, 2% each
|
||||
new/obj/item/weapon/melee/classic_baton(src)
|
||||
if(53 to 54)
|
||||
|
||||
@@ -24,6 +24,12 @@
|
||||
name = "weak"
|
||||
desc = "A lack of physical strength causes a diminshed capability in close quarters combat"
|
||||
|
||||
outgoing_melee_damage_percent = 0.8
|
||||
|
||||
/datum/modifier/trait/wimpy
|
||||
name = "wimpy"
|
||||
desc = "An extreme lack of physical strength causes greatly diminished capability in close quarters combat."
|
||||
|
||||
outgoing_melee_damage_percent = 0.6
|
||||
|
||||
/datum/modifier/trait/haemophilia
|
||||
|
||||
@@ -63,8 +63,8 @@
|
||||
//handle mask filtering
|
||||
if(istype(wear_mask, /obj/item/clothing/mask) && breath)
|
||||
var/obj/item/clothing/mask/M = wear_mask
|
||||
var/datum/gas_mixture/filtered = M.filter_air(breath)
|
||||
loc.assume_air(filtered)
|
||||
var/datum/gas_mixture/gas_filtered = M.filter_air(breath)
|
||||
loc.assume_air(gas_filtered)
|
||||
return breath
|
||||
return null
|
||||
|
||||
|
||||
@@ -23,6 +23,12 @@
|
||||
var/g_skin = 0
|
||||
var/b_skin = 0
|
||||
|
||||
//Synth colors
|
||||
var/synth_color = 0 //Lets normally uncolorable synth parts be colorable.
|
||||
var/r_synth //Used with synth_color to color synth parts that normaly can't be colored.
|
||||
var/g_synth //Same as above
|
||||
var/b_synth //Same as above
|
||||
|
||||
var/size_multiplier = 1 //multiplier for the mob's icon size
|
||||
var/damage_multiplier = 1 //multiplies melee combat damage
|
||||
var/icon_update = 1 //whether icon updating shall take place
|
||||
|
||||
@@ -302,7 +302,7 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
var/image/speech_bubble = image('icons/mob/talk.dmi',src,"[speech_type][speech_bubble_test]")
|
||||
spawn(30) qdel(speech_bubble)
|
||||
|
||||
// VOREStation Edit - Attempt Multi-Z Talking
|
||||
// Attempt Multi-Z Talking
|
||||
var/mob/above = src.shadow
|
||||
while(!QDELETED(above))
|
||||
var/turf/ST = get_turf(above)
|
||||
@@ -315,7 +315,6 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
listening[item] = z_speech_bubble
|
||||
listening_obj |= results["objs"]
|
||||
above = above.shadow
|
||||
// VOREStation Edit End
|
||||
|
||||
//Main 'say' and 'whisper' message delivery
|
||||
for(var/mob/M in listening)
|
||||
@@ -325,12 +324,12 @@ proc/get_radio_key_from_channel(var/channel)
|
||||
var/dst = get_dist(get_turf(M),get_turf(src))
|
||||
|
||||
if(dst <= message_range || (M.stat == DEAD && !forbid_seeing_deadchat)) //Inside normal message range, or dead with ears (handled in the view proc)
|
||||
M << (listening[M] || speech_bubble) // VOREStation Edit - Send the image attached to shadow mob if available
|
||||
M << (listening[M] || speech_bubble) // Send the image attached to shadow mob if available
|
||||
M.hear_say(message, verb, speaking, alt_name, italics, src, speech_sound, sound_vol)
|
||||
|
||||
if(whispering) //Don't even bother with these unless whispering
|
||||
if(dst > message_range && dst <= w_scramble_range) //Inside whisper scramble range
|
||||
M << (listening[M] || speech_bubble) // VOREStation Edit - Send the image attached to shadow mob if available
|
||||
M << (listening[M] || speech_bubble) // Send the image attached to shadow mob if available
|
||||
M.hear_say(stars(message), verb, speaking, alt_name, italics, src, speech_sound, sound_vol*0.2)
|
||||
if(dst > w_scramble_range && dst <= world.view) //Inside whisper 'visible' range
|
||||
M.show_message("<span class='game say'><span class='name'>[src.name]</span> [w_not_heard].</span>", 2)
|
||||
|
||||
@@ -57,10 +57,8 @@
|
||||
if(!A.CanPass(src, start, 1.5, 0))
|
||||
to_chat(src, "<span class='warning'>\The [A] blocks you.</span>")
|
||||
return 0
|
||||
//VOREStation Edit
|
||||
if(!Move(destination))
|
||||
return 0
|
||||
//VOREStation Edit End
|
||||
return 1
|
||||
|
||||
/mob/observer/zMove(direction)
|
||||
@@ -199,7 +197,7 @@
|
||||
/obj/structure/catwalk/CanFallThru(atom/movable/mover as mob|obj, turf/target as turf)
|
||||
if(target.z < z)
|
||||
return FALSE // TODO - Technically should be density = 1 and flags |= ON_BORDER
|
||||
if(!isturf(mover.loc)) // VORESTATION EDIT. Feel free to do an upstream suggestion as well.
|
||||
if(!isturf(mover.loc))
|
||||
return FALSE // Only let loose floor items fall. No more snatching things off people's hands.
|
||||
else
|
||||
return TRUE
|
||||
@@ -213,7 +211,7 @@
|
||||
return TRUE // We don't block sideways or upward movement.
|
||||
else if(istype(mover) && mover.checkpass(PASSGRILLE))
|
||||
return TRUE // Anything small enough to pass a grille will pass a lattice
|
||||
if(!isturf(mover.loc)) // VORESTATION EDIT. Feel free to do an upstream suggestion as well.
|
||||
if(!isturf(mover.loc))
|
||||
return FALSE // Only let loose floor items fall. No more snatching things off people's hands.
|
||||
else
|
||||
return FALSE // TODO - Technically should be density = 1 and flags |= ON_BORDER
|
||||
|
||||
@@ -85,13 +85,12 @@
|
||||
bottom_turf.plane = src.plane
|
||||
bottom_turf.color = below.color
|
||||
underlays = list(bottom_turf)
|
||||
// VOREStation Edit - Hack workaround to byond crash bug - Include the magic overlay holder object.
|
||||
// Hack workaround to byond crash bug - Include the magic overlay holder object.
|
||||
overlays += below.overlays
|
||||
// if(below.overlay_holder)
|
||||
// overlays += (below.overlays + below.overlay_holder.overlays)
|
||||
// else
|
||||
// overlays += below.overlays
|
||||
// VOREStation Edit End
|
||||
|
||||
// get objects (not mobs, they are handled by /obj/zshadow)
|
||||
var/list/o_img = list()
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
/mob/zshadow/set_typing_indicator(var/state)
|
||||
if(!typing_indicator)
|
||||
typing_indicator = new
|
||||
typing_indicator.icon = 'icons/mob/talk.dmi' //VOREStation Edit - Looks better on the right with job icons.
|
||||
typing_indicator.icon = 'icons/mob/talk.dmi' // Looks better on the right with job icons.
|
||||
typing_indicator.icon_state = "typing"
|
||||
if(state && !typing)
|
||||
overlays += typing_indicator
|
||||
|
||||
@@ -19,6 +19,8 @@ var/global/list/limb_icon_cache = list()
|
||||
if(robotic >= ORGAN_ROBOT)
|
||||
var/datum/robolimb/franchise = all_robolimbs[model]
|
||||
if(!(franchise && franchise.lifelike))
|
||||
if(human.synth_color)
|
||||
s_col = list(human.r_synth, human.g_synth, human.b_synth)
|
||||
return
|
||||
if(species && human.species && species.name != human.species.name)
|
||||
return
|
||||
|
||||
@@ -245,6 +245,20 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
|
||||
green=xion_green;\
|
||||
rgb=xion_rgb"
|
||||
|
||||
/datum/robolimb/xion_alt3
|
||||
company = "Xion - Whiteout"
|
||||
desc = "This limb has a minimalist black and white casing."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt3.dmi'
|
||||
unavailable_to_build = 1
|
||||
|
||||
/datum/robolimb/xion_alt4
|
||||
company = "Xion - Breach - Whiteout"
|
||||
desc = "This limb has a minimalist black and white casing. Looks a bit menacing."
|
||||
icon = 'icons/mob/human_races/cyberlimbs/xion/xion_alt4.dmi'
|
||||
unavailable_to_build = 1
|
||||
parts = list(BP_HEAD)
|
||||
|
||||
|
||||
/datum/robolimb/xion_monitor
|
||||
company = "Xion Monitor"
|
||||
desc = "Xion Mfg.'s unique spin on a popular prosthetic head model. It looks and minimalist and utilitarian."
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "microbattery"
|
||||
desc = "A small, powerful cell for use in fully prosthetic bodies."
|
||||
icon_state = "scell"
|
||||
organ_tag = "cell"
|
||||
organ_tag = O_CELL
|
||||
parent_organ = BP_TORSO
|
||||
vital = 1
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
// Used for an MMI or posibrain being installed into a human.
|
||||
/obj/item/organ/internal/mmi_holder
|
||||
name = "brain interface"
|
||||
organ_tag = "brain"
|
||||
organ_tag = O_BRAIN
|
||||
parent_organ = BP_HEAD
|
||||
vital = 1
|
||||
var/brain_type = /obj/item/device/mmi
|
||||
|
||||
@@ -466,7 +466,7 @@
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links][stamps]</BODY></HTML>", "window=[name]")
|
||||
return
|
||||
|
||||
else if(istype(P, /obj/item/weapon/stamp))
|
||||
else if(istype(P, /obj/item/weapon/stamp) || istype(P, /obj/item/clothing/gloves/ring/seal))
|
||||
if((!in_range(src, usr) && loc != user && !( istype(loc, /obj/item/weapon/clipboard) ) && loc.loc != user && user.get_active_hand() != P))
|
||||
return
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
name = "large power cable"
|
||||
desc = "This cable is tough. It cannot be cut with simple hand tools."
|
||||
layer = 2.39 //Just below pipes, which are at 2.4
|
||||
color = null //VOREStation Edit
|
||||
color = null
|
||||
|
||||
/obj/structure/cable/heavyduty/attackby(obj/item/W, mob/user)
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
C.energy_setting = ENERGY_PHORON
|
||||
continue
|
||||
|
||||
for(var/obj/effect/engine_setup/filter/F in world)
|
||||
for(var/obj/effect/engine_setup/atmo_filter/F in world)
|
||||
F.coolant = response
|
||||
|
||||
var/list/delayed_objects = list()
|
||||
@@ -227,13 +227,13 @@
|
||||
|
||||
|
||||
// Sets up filters. This assumes filters are set to filter out N2 back to the core loop by default!
|
||||
/obj/effect/engine_setup/filter/
|
||||
/obj/effect/engine_setup/atmo_filter/
|
||||
name = "Omni Filter Marker"
|
||||
var/coolant = null
|
||||
|
||||
/obj/effect/engine_setup/filter/activate()
|
||||
/obj/effect/engine_setup/atmo_filter/activate()
|
||||
..()
|
||||
var/obj/machinery/atmospherics/omni/filter/F = locate() in get_turf(src)
|
||||
var/obj/machinery/atmospherics/omni/atmos_filter/F = locate() in get_turf(src)
|
||||
if(!F)
|
||||
log_and_message_admins("## WARNING: Unable to locate omni filter at [x] [y] [z]!")
|
||||
return SETUP_WARNING
|
||||
|
||||
@@ -235,9 +235,18 @@
|
||||
//if they have a neck grab on someone, that person gets hit instead
|
||||
var/obj/item/weapon/grab/G = locate() in M
|
||||
if(G && G.state >= GRAB_NECK)
|
||||
visible_message("<span class='danger'>\The [M] uses [G.affecting] as a shield!</span>")
|
||||
if(Bump(G.affecting, forced=1))
|
||||
return //If Bump() returns 0 (keep going) then we continue on to attack M.
|
||||
if(G.affecting.stat == DEAD)
|
||||
var/shield_chance = min(80, (30 * (M.mob_size / 10))) //Small mobs have a harder time keeping a dead body as a shield than a human-sized one. Unathi would have an easier job, if they are made to be SIZE_LARGE in the future. -Mech
|
||||
if(prob(shield_chance))
|
||||
visible_message("<span class='danger'>\The [M] uses [G.affecting] as a shield!</span>")
|
||||
if(Bump(G.affecting, forced=1))
|
||||
return
|
||||
else
|
||||
visible_message("<span class='danger'>\The [M] tries to use [G.affecting] as a shield, but fails!</span>")
|
||||
else
|
||||
visible_message("<span class='danger'>\The [M] uses [G.affecting] as a shield!</span>")
|
||||
if(Bump(G.affecting, forced=1))
|
||||
return //If Bump() returns 0 (keep going) then we continue on to attack M.
|
||||
|
||||
passthrough = !attack_mob(M, distance)
|
||||
else
|
||||
@@ -410,6 +419,8 @@
|
||||
return //cannot shoot yourself
|
||||
if(istype(A, /obj/item/projectile))
|
||||
return
|
||||
if(istype(A, /obj/structure/foamedmetal)) //Turrets can detect through foamed metal, but will have to blast through it. Similar to windows, if someone runs behind it, a person should probably just not shoot.
|
||||
return
|
||||
if(istype(A, /mob/living) || istype(A, /obj/mecha) || istype(A, /obj/vehicle))
|
||||
result = 2 //We hit someone, return 1!
|
||||
return
|
||||
|
||||
@@ -96,7 +96,6 @@
|
||||
reagent_state = LIQUID
|
||||
color = "#0064C877"
|
||||
metabolism = REM * 10
|
||||
mrate_static = TRUE
|
||||
|
||||
glass_name = "water"
|
||||
glass_desc = "The father of all refreshments."
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
reagent_state = SOLID
|
||||
color = "#1C1300"
|
||||
ingest_met = REM * 5
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/carbon/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
@@ -74,8 +73,6 @@
|
||||
var/targ_temp = 310
|
||||
var/halluci = 0
|
||||
|
||||
mrate_static = TRUE
|
||||
|
||||
glass_name = "ethanol"
|
||||
glass_desc = "A well-known alcohol with a variety of applications."
|
||||
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
taste_mult = 4
|
||||
reagent_state = SOLID
|
||||
metabolism = REM * 4
|
||||
mrate_static = TRUE
|
||||
var/nutriment_factor = 30 // Per unit
|
||||
var/injectable = 0
|
||||
color = "#664330"
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
color = "#00BFFF"
|
||||
overdose = REAGENTS_OVERDOSE * 2
|
||||
metabolism = REM * 0.5
|
||||
mrate_static = TRUE
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
@@ -141,7 +140,6 @@
|
||||
taste_description = "bitterness"
|
||||
reagent_state = LIQUID
|
||||
color = "#0040FF"
|
||||
mrate_static = TRUE //Until it's not crazy strong, at least
|
||||
overdose = REAGENTS_OVERDOSE * 0.5
|
||||
scannable = 1
|
||||
|
||||
|
||||
@@ -170,10 +170,10 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
|
||||
|
||||
/obj/machinery/r_n_d/circuit_imprinter/proc/canBuild(var/datum/design/D)
|
||||
for(var/M in D.materials)
|
||||
if(materials[M] < D.materials[M])
|
||||
if(materials[M] < (D.materials[M] * mat_efficiency))
|
||||
return 0
|
||||
for(var/C in D.chemicals)
|
||||
if(!reagents.has_reagent(C, D.chemicals[C]))
|
||||
if(!reagents.has_reagent(C, D.chemicals[C] * mat_efficiency))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -671,7 +671,7 @@ other types of metals and chemistry for reagents).
|
||||
id = "s-filter"
|
||||
req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3)
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 40, "silver" = 10)
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/filter
|
||||
build_path = /obj/item/weapon/stock_parts/subspace/sub_filter
|
||||
sort_string = "UAAAB"
|
||||
|
||||
/datum/design/item/stock_part/subspace_amplifier
|
||||
|
||||
@@ -156,6 +156,38 @@
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 5625)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/datum/design/item/prosfab/pros/heart
|
||||
name = "Prosthetic heart"
|
||||
id = "pros_heart"
|
||||
build_path = /obj/item/organ/internal/heart
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/datum/design/item/prosfab/pros/lungs
|
||||
name = "Prosthetic lungs"
|
||||
id = "pros_lung"
|
||||
build_path = /obj/item/organ/internal/lungs
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/datum/design/item/prosfab/pros/liver
|
||||
name = "Prosthetic liver"
|
||||
id = "pros_liver"
|
||||
build_path = /obj/item/organ/internal/liver
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
/datum/design/item/prosfab/pros/kidneys
|
||||
name = "Prosthetic liver"
|
||||
id = "pros_kidney"
|
||||
build_path = /obj/item/organ/internal/kidneys
|
||||
time = 15
|
||||
materials = list(DEFAULT_WALL_MATERIAL = 5625, "glass" = 1000)
|
||||
// req_tech = list(TECH_ENGINEERING = 2, TECH_MATERIAL = 2)
|
||||
|
||||
//////////////////// Cyborg Parts ////////////////////
|
||||
/datum/design/item/prosfab/cyborg
|
||||
category = "Cyborg Parts"
|
||||
|
||||
@@ -164,10 +164,10 @@
|
||||
|
||||
/obj/machinery/r_n_d/protolathe/proc/canBuild(var/datum/design/D)
|
||||
for(var/M in D.materials)
|
||||
if(materials[M] < D.materials[M])
|
||||
if(materials[M] < (D.materials[M] * mat_efficiency))
|
||||
return 0
|
||||
for(var/C in D.chemicals)
|
||||
if(!reagents.has_reagent(C, D.chemicals[C]))
|
||||
if(!reagents.has_reagent(C, D.chemicals[C] * mat_efficiency))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -27,13 +27,16 @@
|
||||
var/obj/item/organ/external/P = target.organs_by_name[E.parent_organ]
|
||||
var/obj/item/organ/external/affected = target.get_organ(target_zone)
|
||||
if (affected)
|
||||
user << "<span class='warning'>Something is in the way! You can't attach [E] here!</span>"
|
||||
to_chat(user, "<span class='warning'>Something is in the way! You can't attach [E] here!</span>")
|
||||
return 0
|
||||
if(!P)
|
||||
user << "<span class='warning'>There's nothing to attach [E] to!</span>"
|
||||
to_chat(user, "<span class='warning'>There's nothing to attach [E] to!</span>")
|
||||
return 0
|
||||
else if((P.robotic >= ORGAN_ROBOT) && (E.robotic < ORGAN_ROBOT))
|
||||
user << "<span class='warning'>Attaching [E] to [P] wouldn't work well.</span>"
|
||||
to_chat(user, "<span class='warning'>Attaching [E] to [P] wouldn't work well.</span>")
|
||||
return 0
|
||||
else if(istype(E, /obj/item/organ/external/head) && E.robotic >= ORGAN_ROBOT && P.robotic < ORGAN_ROBOT)
|
||||
to_chat(user, "<span class='warning'>Attaching [E] to [P] might break [E].</span>")
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
|
||||
@@ -6,10 +6,15 @@
|
||||
name = "Crystal"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "crystal"
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
|
||||
/obj/machinery/crystal/New()
|
||||
if(prob(50))
|
||||
icon_state = "crystal2"
|
||||
set_light(3, 3, "#CC00CC")
|
||||
else
|
||||
set_light(3, 3, "#33CC33")
|
||||
|
||||
//large finds
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user