Merge remote-tracking branch 'upstream/master'

This commit is contained in:
BongaTheProto
2023-01-18 04:20:45 -05:00
53 changed files with 339 additions and 93 deletions

View File

@@ -997,14 +997,14 @@
/turf/open/floor/plasteel/freezer, /turf/open/floor/plasteel/freezer,
/area/mine/living_quarters) /area/mine/living_quarters)
"qh" = ( "qh" = (
/obj/structure/sink{
dir = 8;
pixel_x = 11
},
/obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar,
/obj/effect/turf_decal/tile/bar{ /obj/effect/turf_decal/tile/bar{
dir = 1 dir = 1
}, },
/obj/structure/sink{
dir = 4;
pixel_x = 12
},
/turf/open/floor/plasteel, /turf/open/floor/plasteel,
/area/mine/living_quarters) /area/mine/living_quarters)
"qm" = ( "qm" = (
@@ -2504,13 +2504,13 @@
/turf/open/floor/plasteel/white, /turf/open/floor/plasteel/white,
/area/mine/laborcamp) /area/mine/laborcamp)
"Mj" = ( "Mj" = (
/obj/structure/sink{
dir = 4;
pixel_x = -12
},
/obj/structure/mirror{ /obj/structure/mirror{
pixel_x = -28 pixel_x = -28
}, },
/obj/structure/sink{
dir = 8;
pixel_x = -12
},
/turf/open/floor/plasteel/freezer, /turf/open/floor/plasteel/freezer,
/area/mine/living_quarters) /area/mine/living_quarters)
"Mk" = ( "Mk" = (

View File

@@ -340,41 +340,6 @@ GLOBAL_LIST_INIT(greyscale_limb_types, list("human","moth","lizard","pod","plant
//body ids that have prosthetic sprites //body ids that have prosthetic sprites
GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon")) GLOBAL_LIST_INIT(prosthetic_limb_types, list("xion","bishop","cybersolutions","grayson","hephaestus","nanotrasen","talon"))
//FAMILY HEIRLOOM LIST
//this works by using the first number for the species as a probability to choose one of the items in the following list for their family heirloom
//if the probability fails, or the species simply isn't in the list, then it defaults to the next global list, which has its own list of items for each job
//the first item in the list is for if your job isn't in that list
//species-heirloom list (we categorise them by the species id var)
GLOBAL_LIST_INIT(species_heirlooms, list(
"dwarf" = list(25, list(/obj/item/reagent_containers/food/drinks/dwarf_mug)), //example: 25% chance for dwarves to get a dwarf mug as their heirloom (normal container but has manly dorf icon)
"insect" = list(25, list(/obj/item/flashlight/lantern/heirloom_moth)),
"ipc" = list(25, list(/obj/item/stock_parts/cell/family)), //gives a broken powercell for flavor text!
"synthliz" = list(25, list(/obj/item/stock_parts/cell/family)), //they're also robots
"slimeperson" = list(25, list(/obj/item/toy/plush/slimeplushie)),
"lizard" = list(25, list(/obj/item/toy/plush/lizardplushie)),
))
//job-heirloom list
GLOBAL_LIST_INIT(job_heirlooms, list(
"NO_JOB" = list(/obj/item/toy/cards/deck, /obj/item/lighter, /obj/item/dice/d20),
"Clown" = list(/obj/item/paint/anycolor, /obj/item/bikehorn/golden),
"Mime" = list(/obj/item/paint/anycolor, /obj/item/toy/dummy),
"Cook" = list(/obj/item/kitchen/knife/scimitar),
"Botanist" = list(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie),
"Medical Doctor" = list(/obj/item/healthanalyzer),
"Paramedic" = list(/obj/item/lighter), //..why?
"Station Engineer" = list(/obj/item/wirecutters/brass/family, /obj/item/crowbar/brass/family, /obj/item/screwdriver/brass/family, /obj/item/wrench/brass/family), //brass tools but without the tool speed modifier
"Atmospheric Technician" = list(/obj/item/extinguisher/mini/family),
"Lawyer" = list(/obj/item/storage/briefcase/lawyer/family),
"Janitor" = list(/obj/item/mop),
"Scientist" = list(/obj/item/toy/plush/slimeplushie),
"Assistant" = list(/obj/item/clothing/gloves/cut/family),
"Prisoner" = list (/obj/item/pen/blue),
"Chaplain" = list(/obj/item/camera/spooky/family),
"Head of Personnel" = list(/obj/item/pinpointer/ian)
))
//body ids that have non-gendered bodyparts //body ids that have non-gendered bodyparts
GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem")) GLOBAL_LIST_INIT(nongendered_limb_types, list("fly", "zombie" ,"synth", "shadow", "cultgolem", "agent", "plasmaman", "clockgolem", "clothgolem"))

View File

@@ -181,10 +181,10 @@
/datum/quirk/trandening /datum/quirk/trandening
name = "High Luminosity Eyes" name = "High Luminosity Eyes"
desc = "When the next big fancy implant came out you had to buy one on impluse!" desc = "When the next big fancy implant came out you had to buy one on impulse! You start the shift with emissive cybernetic eyes that can emit colored beams of light."
value = 1 value = 1
gain_text = "<span class='notice'>You have to keep up with the next big thing!.</span>" gain_text = "<span class='notice'>You've been keeping up with the latest cybernetic trends!</span>"
lose_text = "<span class='danger'>High-tech gizmos are a scam...</span>" lose_text = "<span class='danger'>High powered eye lasers? What were you thinking...</span>"
/datum/quirk/trandening/on_spawn() /datum/quirk/trandening/on_spawn()
// Get targets // Get targets
@@ -195,6 +195,34 @@
qdel(old_eyes) qdel(old_eyes)
new_eyes.Insert(quirk_holder) new_eyes.Insert(quirk_holder)
/datum/quirk/trandening/remove()
// Get targets
var/obj/item/organ/eyes/old_eyes = quirk_holder.getorganslot(ORGAN_SLOT_EYES)
var/mob/living/carbon/human/qurk_mob = quirk_holder
// Check for eyes existing
if(!old_eyes)
return
// Check for quirk eyes
if(!istype(old_eyes, /obj/item/organ/eyes/robotic/glow))
return
// Define new eyes
var/species_eyes = /obj/item/organ/eyes
// Check for mutant eyes
if(qurk_mob.dna.species && qurk_mob.dna.species.mutanteyes)
// Set eyes to mutant type
species_eyes = qurk_mob.dna.species.mutanteyes
// Create new eyes item
var/obj/item/organ/eyes/new_eyes = new species_eyes()
// Replace eyes
qdel(old_eyes)
new_eyes.Insert(quirk_holder)
/datum/quirk/bloodpressure /datum/quirk/bloodpressure
name = "Polycythemia vera" name = "Polycythemia vera"
desc = "You've a treated form of Polycythemia vera that increases the total blood volume inside of you as well as the rate of replenishment!" desc = "You've a treated form of Polycythemia vera that increases the total blood volume inside of you as well as the rate of replenishment!"

View File

@@ -44,26 +44,37 @@
GLOBAL_LIST_EMPTY(family_heirlooms) GLOBAL_LIST_EMPTY(family_heirlooms)
/datum/quirk/family_heirloom/on_spawn() /datum/quirk/family_heirloom/on_spawn()
var/mob/living/carbon/human/H = quirk_holder // Define holder and type
var/mob/living/carbon/human/human_holder = quirk_holder
var/obj/item/heirloom_type var/obj/item/heirloom_type
var/species_heirloom_entry = GLOB.species_heirlooms[H.dna.species.id]
if(species_heirloom_entry) // The quirk holder's species - we have a 50% chance, if we have a species with a set heirloom, to choose a species heirloom.
if(prob(species_heirloom_entry[1])) var/datum/species/holder_species = human_holder.dna?.species
heirloom_type = pick(species_heirloom_entry[2]) if(holder_species && LAZYLEN(holder_species.family_heirlooms) && prob(50))
if(!heirloom_type) heirloom_type = pick(holder_species.family_heirlooms)
var/job_heirloom_entry = GLOB.job_heirlooms[quirk_holder.mind.assigned_role]
if(!job_heirloom_entry)
heirloom_type = pick(GLOB.job_heirlooms["NO_JOB"]) //consider: should this be a define?
else else
heirloom_type = pick(job_heirloom_entry) // Our quirk holder's job
var/datum/job/holder_job = SSjob.GetJob(human_holder.last_mind?.assigned_role)
if(holder_job && LAZYLEN(holder_job.family_heirlooms))
heirloom_type = pick(holder_job.family_heirlooms)
// If we didn't find an heirloom somehow, throw them a generic one
if(!heirloom_type)
heirloom_type = pick(/obj/item/toy/cards/deck, /obj/item/lighter, /obj/item/dice/d20)
// Create the heirloom item
heirloom = new heirloom_type(get_turf(quirk_holder)) heirloom = new heirloom_type(get_turf(quirk_holder))
// Add to global list
GLOB.family_heirlooms += heirloom GLOB.family_heirlooms += heirloom
// Determine and assign item location
var/list/slots = list( var/list/slots = list(
"in your left pocket" = ITEM_SLOT_LPOCKET, "in your left pocket" = ITEM_SLOT_LPOCKET,
"in your right pocket" = ITEM_SLOT_RPOCKET, "in your right pocket" = ITEM_SLOT_RPOCKET,
"in your backpack" = ITEM_SLOT_BACKPACK "in your backpack" = ITEM_SLOT_BACKPACK
) )
where = H.equip_in_one_of_slots(heirloom, slots, FALSE) || "at your feet" where = human_holder.equip_in_one_of_slots(heirloom, slots, FALSE) || "at your feet"
/datum/quirk/family_heirloom/post_add() /datum/quirk/family_heirloom/post_add()
if(where == "in your backpack") if(where == "in your backpack")
@@ -75,13 +86,25 @@ GLOBAL_LIST_EMPTY(family_heirlooms)
heirloom.name = "\improper [family_name[family_name.len]] family [heirloom.name]" heirloom.name = "\improper [family_name[family_name.len]] family [heirloom.name]"
/datum/quirk/family_heirloom/on_process() /datum/quirk/family_heirloom/on_process()
if(heirloom in quirk_holder.GetAllContents()) // Ignore for dead holder
if(quirk_holder.stat == DEAD)
return
// When held: Positive mood
if(heirloom && (heirloom in quirk_holder.GetAllContents()))
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing") SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing")
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom) SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom", /datum/mood_event/family_heirloom)
// When not held: Negative mood
else else
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom")
SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing)
/datum/quirk/item_quirk/family_heirloom/remove()
// Clear mood events when removing this quirk
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom")
SEND_SIGNAL(quirk_holder, COMSIG_CLEAR_MOOD_EVENT, "family_heirloom_missing")
/datum/quirk/family_heirloom/clone_data() /datum/quirk/family_heirloom/clone_data()
return heirloom return heirloom

View File

@@ -165,22 +165,7 @@
lose_text = "<span class='notice'>You no longer feel like you should be eating trash.</span>" lose_text = "<span class='notice'>You no longer feel like you should be eating trash.</span>"
mob_trait = TRAIT_TRASHCAN mob_trait = TRAIT_TRASHCAN
/datum/quirk/colorist // Moved Colorist quirk to a loadout item
name = "Colorist"
desc = "You like carrying around a hair dye spray to quickly apply color patterns to your hair."
value = 0
medical_record_text = "Patient enjoys dyeing their hair with pretty colors."
/datum/quirk/colorist/on_spawn()
var/mob/living/carbon/human/H = quirk_holder
var/obj/item/dyespray/spraycan = new(get_turf(quirk_holder))
H.equip_to_slot(spraycan, ITEM_SLOT_BACKPACK)
H.regenerate_icons()
/datum/quirk/colorist/post_add()
var/mob/living/carbon/human/H = quirk_holder
SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H)
to_chat(quirk_holder, "<span class='boldnotice'>You brought some extra dye with you! It's in your bag if you forgot.</span>")
/datum/quirk/salt_sensitive /datum/quirk/salt_sensitive
name = "Sodium Sensitivity" name = "Sodium Sensitivity"

View File

@@ -55,8 +55,9 @@
generate_items_inside(items_inside,src) generate_items_inside(items_inside,src)
/obj/item/storage/firstaid/ancient /obj/item/storage/firstaid/ancient
icon_state = "firstaid" name = "ancient first-aid kit"
desc = "A first aid kit with the ability to heal common types of injuries." icon_state = "oldfirstaid"
desc = "A first aid kit with the ability to heal common types of injuries. You start thinking of the good old days just by looking at it."
/obj/item/storage/firstaid/ancient/PopulateContents() /obj/item/storage/firstaid/ancient/PopulateContents()
if(empty) if(empty)
@@ -69,6 +70,10 @@
new /obj/item/stack/medical/mesh(src) new /obj/item/stack/medical/mesh(src)
new /obj/item/stack/medical/mesh(src) new /obj/item/stack/medical/mesh(src)
/obj/item/storage/firstaid/ancient/heirloom
// Long since been ransacked by hungry powergaming assistants breaking into med storage
empty = TRUE
/obj/item/storage/firstaid/brute /obj/item/storage/firstaid/brute
name = "trauma treatment kit" name = "trauma treatment kit"
desc = "A first aid kit for when you get toolboxed." desc = "A first aid kit for when you get toolboxed."

View File

@@ -2,16 +2,26 @@
/obj/item/prescription_kit /obj/item/prescription_kit
name = "prescription lens kit" name = "prescription lens kit"
desc = "A disposable kit containing all the needed tools and parts to develop and apply a self-modifying prescription lens overlay device to any eyewear." desc = "A disposable kit containing all the needed tools and parts to develop and apply a self-modifying prescription lens overlay device to any eyewear. \
Insert eyewear, receive vision-correcting lenses."
icon = 'icons/obj/device.dmi' icon = 'icons/obj/device.dmi'
icon_state = "modkit" icon_state = "modkit"
/obj/item/prescription_kit/attack_obj(obj/O, mob/living/user) /obj/item/prescription_kit/attackby(obj/item/I, mob/living/user, params)
if(!istype(O, /obj/item/clothing/glasses)) if(istype(I, /obj/item/clothing/glasses) && I.Adjacent(user))
var/obj/item/clothing/glasses/target_glasses = I
prescribe(target_glasses, user)
else
return ..() return ..()
if(istype(O, /obj/item/clothing/glasses)) /obj/item/prescription_kit/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
var/obj/item/clothing/glasses/target_glasses = O if(istype(target, /obj/item/clothing/glasses) && target.Adjacent(user))
var/obj/item/clothing/glasses/target_glasses = target
prescribe(target_glasses, user)
else
. = ..()
/obj/item/prescription_kit/proc/prescribe(obj/item/clothing/glasses/target_glasses, mob/user)
if(target_glasses.vision_correction) if(target_glasses.vision_correction)
to_chat(user, span_notice("These are already fitted with prescription lenses or otherwise already correct vision!")) to_chat(user, span_notice("These are already fitted with prescription lenses or otherwise already correct vision!"))
return return

View File

@@ -69,6 +69,9 @@
///Is this job affected by weird spawns like the ones from station traits ///Is this job affected by weird spawns like the ones from station traits
var/random_spawns_possible = TRUE var/random_spawns_possible = TRUE
/// List of family heirlooms this job can get with the family heirloom quirk. List of types.
var/list/family_heirlooms
var/display_order = JOB_DISPLAY_ORDER_DEFAULT var/display_order = JOB_DISPLAY_ORDER_DEFAULT
var/bounty_types = CIV_JOB_BASIC var/bounty_types = CIV_JOB_BASIC

View File

@@ -21,6 +21,11 @@ Assistant
always_can_respawn_as = TRUE always_can_respawn_as = TRUE
threat = 0.2 threat = 0.2
family_heirlooms = list(
/obj/item/storage/toolbox/mechanical/old/heirloom,
/obj/item/clothing/gloves/cut/family
)
/datum/job/assistant/get_access() /datum/job/assistant/get_access()
if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set
. = ..() . = ..()

View File

@@ -27,6 +27,12 @@
display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN display_order = JOB_DISPLAY_ORDER_ATMOSPHERIC_TECHNICIAN
threat = 0.5 threat = 0.5
family_heirlooms = list(
/obj/item/lighter,
/obj/item/lighter/greyscale,
/obj/item/storage/box/matches
)
/datum/outfit/job/atmos /datum/outfit/job/atmos
name = "Atmospheric Technician" name = "Atmospheric Technician"
jobtype = /datum/job/atmos jobtype = /datum/job/atmos

View File

@@ -21,6 +21,12 @@
display_order = JOB_DISPLAY_ORDER_BARTENDER display_order = JOB_DISPLAY_ORDER_BARTENDER
threat = 0.5 threat = 0.5
family_heirlooms = list(
/obj/item/reagent_containers/rag,
/obj/item/clothing/head/that,
/obj/item/reagent_containers/food/drinks/shaker
)
/datum/outfit/job/bartender /datum/outfit/job/bartender
name = "Bartender" name = "Bartender"
jobtype = /datum/job/bartender jobtype = /datum/job/bartender

View File

@@ -20,6 +20,12 @@
display_order = JOB_DISPLAY_ORDER_BOTANIST display_order = JOB_DISPLAY_ORDER_BOTANIST
threat = 1.5 // lol powergame threat = 1.5 // lol powergame
family_heirlooms = list(
/obj/item/cultivator,
/obj/item/reagent_containers/glass/bucket, // Watering cans don't exist yet
/obj/item/toy/plush/beeplushie,
)
/datum/outfit/job/botanist /datum/outfit/job/botanist
name = "Botanist" name = "Botanist"
jobtype = /datum/job/hydro jobtype = /datum/job/hydro

View File

@@ -33,6 +33,11 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 5 threat = 5
family_heirlooms = list(
/obj/item/reagent_containers/food/drinks/flask/gold,
/obj/item/toy/figure/captain
)
/datum/job/captain/get_access() /datum/job/captain/get_access()
return get_all_accesses() return get_all_accesses()

View File

@@ -22,6 +22,10 @@
bounty_types = CIV_JOB_RANDOM bounty_types = CIV_JOB_RANDOM
threat = 0.2 threat = 0.2
family_heirlooms = list(
/obj/item/clipboard
)
/datum/outfit/job/cargo_tech /datum/outfit/job/cargo_tech
name = "Cargo Technician" name = "Cargo Technician"
jobtype = /datum/job/cargo_tech jobtype = /datum/job/cargo_tech

View File

@@ -20,6 +20,11 @@
display_order = JOB_DISPLAY_ORDER_CHAPLAIN display_order = JOB_DISPLAY_ORDER_CHAPLAIN
threat = 0.5 threat = 0.5
family_heirlooms = list(
/obj/item/toy/windupToolbox,
/obj/item/reagent_containers/food/drinks/bottle/holywater
)
/datum/job/chaplain/after_spawn(mob/living/H, client/C) /datum/job/chaplain/after_spawn(mob/living/H, client/C)
. = ..() . = ..()

View File

@@ -25,6 +25,11 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/book/manual/wiki/chemistry,
/obj/item/fermichem/pHbooklet
)
/datum/outfit/job/chemist /datum/outfit/job/chemist
name = "Chemist" name = "Chemist"
jobtype = /datum/job/chemist jobtype = /datum/job/chemist

View File

@@ -38,6 +38,15 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity)
threat = 2 threat = 2
family_heirlooms = list(
/obj/item/clothing/head/hardhat,
/obj/item/screwdriver/brass/family,
/obj/item/wrench/brass/family,
/obj/item/weldingtool/mini, // No brass family variant
/obj/item/crowbar/brass/family,
/obj/item/wirecutters/brass/family
)
/datum/outfit/job/ce /datum/outfit/job/ce
name = "Chief Engineer" name = "Chief Engineer"
jobtype = /datum/job/chief_engineer jobtype = /datum/job/chief_engineer

View File

@@ -36,6 +36,15 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom,
/obj/item/scalpel,
/obj/item/hemostat,
/obj/item/circular_saw,
/obj/item/retractor,
/obj/item/cautery
)
/datum/outfit/job/cmo /datum/outfit/job/cmo
name = "Chief Medical Officer" name = "Chief Medical Officer"
jobtype = /datum/job/cmo jobtype = /datum/job/cmo

View File

@@ -22,6 +22,10 @@
display_order = JOB_DISPLAY_ORDER_CLOWN display_order = JOB_DISPLAY_ORDER_CLOWN
threat = 0 // honk threat = 0 // honk
family_heirlooms = list(
/obj/item/bikehorn/golden
)
/datum/outfit/job/clown /datum/outfit/job/clown
name = "Clown" name = "Clown"
jobtype = /datum/job/clown jobtype = /datum/job/clown

View File

@@ -22,6 +22,12 @@
display_order = JOB_DISPLAY_ORDER_COOK display_order = JOB_DISPLAY_ORDER_COOK
threat = 0.2 threat = 0.2
family_heirlooms = list(
/obj/item/reagent_containers/food/condiment/saltshaker,
/obj/item/kitchen/rollingpin,
/obj/item/clothing/head/chefhat
)
/datum/outfit/job/cook /datum/outfit/job/cook
name = "Cook" name = "Cook"
jobtype = /datum/job/cook jobtype = /datum/job/cook

View File

@@ -20,6 +20,11 @@
display_order = JOB_DISPLAY_ORDER_CURATOR display_order = JOB_DISPLAY_ORDER_CURATOR
threat = 0.3 threat = 0.3
family_heirlooms = list(
/obj/item/pen/fountain,
/obj/item/storage/dice
)
/datum/outfit/job/curator /datum/outfit/job/curator
name = "Curator" name = "Curator"
jobtype = /datum/job/curator jobtype = /datum/job/curator

View File

@@ -28,6 +28,10 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/monophobia) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/monophobia)
threat = 1 threat = 1
family_heirlooms = list(
/obj/item/reagent_containers/food/drinks/flask/det
)
/datum/outfit/job/detective /datum/outfit/job/detective
name = "Detective" name = "Detective"
jobtype = /datum/job/detective jobtype = /datum/job/detective

View File

@@ -25,6 +25,10 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/clothing/under/shorts/purple
)
/datum/outfit/job/geneticist /datum/outfit/job/geneticist
name = "Geneticist" name = "Geneticist"
jobtype = /datum/job/geneticist jobtype = /datum/job/geneticist

View File

@@ -40,6 +40,10 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity)
threat = 2 threat = 2
family_heirlooms = list(
/obj/item/reagent_containers/food/drinks/trophy/silver_cup
)
/datum/outfit/job/hop /datum/outfit/job/hop
name = "Head of Personnel" name = "Head of Personnel"

View File

@@ -39,6 +39,10 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia, /datum/quirk/insanity)
threat = 3 threat = 3
family_heirlooms = list(
/obj/item/book/manual/wiki/security_space_law
)
/datum/outfit/job/hos /datum/outfit/job/hos
name = "Head of Security" name = "Head of Security"
jobtype = /datum/job/hos jobtype = /datum/job/hos

View File

@@ -20,6 +20,13 @@
display_order = JOB_DISPLAY_ORDER_JANITOR display_order = JOB_DISPLAY_ORDER_JANITOR
threat = 0.2 threat = 0.2
family_heirlooms = list(
/obj/item/mop,
/obj/item/clothing/suit/caution,
/obj/item/reagent_containers/glass/bucket,
/obj/item/soap
)
/datum/outfit/job/janitor /datum/outfit/job/janitor
name = "Janitor" name = "Janitor"
jobtype = /datum/job/janitor jobtype = /datum/job/janitor

View File

@@ -23,6 +23,11 @@
display_order = JOB_DISPLAY_ORDER_LAWYER display_order = JOB_DISPLAY_ORDER_LAWYER
threat = 0.3 threat = 0.3
family_heirlooms = list(
/obj/item/gavelhammer,
/obj/item/book/manual/wiki/security_space_law
)
/datum/outfit/job/lawyer /datum/outfit/job/lawyer
name = "Lawyer" name = "Lawyer"
jobtype = /datum/job/lawyer jobtype = /datum/job/lawyer

View File

@@ -23,6 +23,15 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom,
/obj/item/scalpel,
/obj/item/hemostat,
/obj/item/circular_saw,
/obj/item/retractor,
/obj/item/cautery
)
/datum/outfit/job/doctor /datum/outfit/job/doctor
name = "Medical Doctor" name = "Medical Doctor"
jobtype = /datum/job/doctor jobtype = /datum/job/doctor

View File

@@ -21,6 +21,10 @@
threat = 0 threat = 0
family_heirlooms = list(
/obj/item/reagent_containers/food/snacks/baguette
)
/datum/job/mime/after_spawn(mob/living/carbon/human/H, client/C) /datum/job/mime/after_spawn(mob/living/carbon/human/H, client/C)
. = ..() . = ..()
H.apply_pref_name("mime", C) H.apply_pref_name("mime", C)

View File

@@ -24,6 +24,10 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom
)
/datum/outfit/job/paramedic /datum/outfit/job/paramedic
name = "Paramedic" name = "Paramedic"
jobtype = /datum/job/paramedic jobtype = /datum/job/paramedic

View File

@@ -14,6 +14,10 @@
display_order = JOB_DISPLAY_ORDER_PRISONER display_order = JOB_DISPLAY_ORDER_PRISONER
family_heirlooms = list(
/obj/item/pen/blue
)
/datum/job/prisoner/get_latejoin_spawn_point() /datum/job/prisoner/get_latejoin_spawn_point()
return get_roundstart_spawn_point() return get_roundstart_spawn_point()

View File

@@ -34,6 +34,11 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 0.5 threat = 0.5
family_heirlooms = list(
/obj/item/stamp,
/obj/item/stamp/denied
)
/datum/outfit/job/quartermaster /datum/outfit/job/quartermaster
name = "Quartermaster" name = "Quartermaster"
jobtype = /datum/job/qm jobtype = /datum/job/qm

View File

@@ -39,6 +39,10 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 5 threat = 5
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
/datum/outfit/job/rd /datum/outfit/job/rd
name = "Research Director" name = "Research Director"
jobtype = /datum/job/rd jobtype = /datum/job/rd

View File

@@ -25,6 +25,10 @@
display_order = JOB_DISPLAY_ORDER_ROBOTICIST display_order = JOB_DISPLAY_ORDER_ROBOTICIST
threat = 1 threat = 1
family_heirlooms = list(
/obj/item/toy/figure/borg
)
/datum/outfit/job/roboticist /datum/outfit/job/roboticist
name = "Roboticist" name = "Roboticist"
jobtype = /datum/job/roboticist jobtype = /datum/job/roboticist

View File

@@ -23,6 +23,10 @@
display_order = JOB_DISPLAY_ORDER_SCIENTIST display_order = JOB_DISPLAY_ORDER_SCIENTIST
threat = 1.2 threat = 1.2
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
/datum/outfit/job/scientist /datum/outfit/job/scientist
name = "Scientist" name = "Scientist"
jobtype = /datum/job/scientist jobtype = /datum/job/scientist

View File

@@ -29,6 +29,11 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
threat = 2 threat = 2
family_heirlooms = list(
/obj/item/book/manual/wiki/security_space_law,
/obj/item/clothing/head/beret/sec
)
/datum/job/officer/get_access() /datum/job/officer/get_access()
var/list/L = list() var/list/L = list()
L |= ..() | check_config_for_sec_maint() L |= ..() | check_config_for_sec_maint()

View File

@@ -25,6 +25,11 @@
threat = 1.5 threat = 1.5
family_heirlooms = list(
/obj/item/pickaxe/mini,
/obj/item/shovel
)
/datum/outfit/job/miner /datum/outfit/job/miner
name = "Shaft Miner (Lavaland)" name = "Shaft Miner (Lavaland)"
jobtype = /datum/job/mining jobtype = /datum/job/mining

View File

@@ -28,6 +28,15 @@
threat = 1 threat = 1
family_heirlooms = list(
/obj/item/clothing/head/hardhat,
/obj/item/screwdriver/brass/family,
/obj/item/wrench/brass/family,
/obj/item/weldingtool/mini, // No brass family variant
/obj/item/crowbar/brass/family,
/obj/item/wirecutters/brass/family
)
/datum/outfit/job/engineer /datum/outfit/job/engineer
name = "Station Engineer" name = "Station Engineer"
jobtype = /datum/job/engineer jobtype = /datum/job/engineer

View File

@@ -26,6 +26,10 @@
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery) starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/reagent_containers/syringe
)
/datum/outfit/job/virologist /datum/outfit/job/virologist
name = "Virologist" name = "Virologist"
jobtype = /datum/job/virologist jobtype = /datum/job/virologist

View File

@@ -30,6 +30,10 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia) blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia)
threat = 2 threat = 2
family_heirlooms = list(
/obj/item/book/manual/wiki/security_space_law
)
/datum/job/warden/get_access() /datum/job/warden/get_access()
var/list/L = list() var/list/L = list()
L = ..() | check_config_for_sec_maint() L = ..() | check_config_for_sec_maint()

View File

@@ -237,6 +237,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
///For custom overrides for species ass images ///For custom overrides for species ass images
var/icon/ass_image var/icon/ass_image
/// List of family heirlooms this species can get with the family heirloom quirk. List of types.
var/list/family_heirlooms
/////////// ///////////
// PROCS // // PROCS //
/////////// ///////////

View File

@@ -25,3 +25,7 @@
allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale") allowed_limb_ids = list("insect","apid","moth","moth_not_greyscale")
eye_type = "insect" eye_type = "insect"
family_heirlooms = list(
/obj/item/flashlight/lantern/heirloom_moth
)

View File

@@ -20,6 +20,11 @@ GLOBAL_LIST_INIT(dwarf_last, world.file2list("strings/names/dwarf_last.txt")) //
species_language_holder = /datum/language_holder/dwarf species_language_holder = /datum/language_holder/dwarf
species_category = SPECIES_CATEGORY_BASIC //a kind of human species_category = SPECIES_CATEGORY_BASIC //a kind of human
family_heirlooms = list(
// Dwarves get a dwarf mug as their heirloom (normal container but has manly dorf icon)
/obj/item/reagent_containers/food/drinks/dwarf_mug
)
/mob/living/carbon/human/species/dwarf //species admin spawn path /mob/living/carbon/human/species/dwarf //species admin spawn path
race = /datum/species/dwarf //and the race the path is set to. race = /datum/species/dwarf //and the race the path is set to.

View File

@@ -13,6 +13,7 @@
wagging_type = "mam_waggingtail" wagging_type = "mam_waggingtail"
species_category = SPECIES_CATEGORY_FURRY species_category = SPECIES_CATEGORY_FURRY
ass_image = 'icons/ass/asscat.png' ass_image = 'icons/ass/asscat.png'
family_heirlooms = list(/obj/item/toy/cattoy)
/datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) /datum/species/human/felinid/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load)
if(ishuman(C)) if(ishuman(C))

View File

@@ -37,6 +37,11 @@
species_category = SPECIES_CATEGORY_ROBOT species_category = SPECIES_CATEGORY_ROBOT
wings_icons = SPECIES_WINGS_ROBOT wings_icons = SPECIES_WINGS_ROBOT
family_heirlooms = list(
// Gives a broken powercell for flavor text!
/obj/item/stock_parts/cell/family
)
var/datum/action/innate/monitor_change/screen var/datum/action/innate/monitor_change/screen
languagewhitelist = list("Encoded Audio Language") //Skyrat change - species language whitelist languagewhitelist = list("Encoded Audio Language") //Skyrat change - species language whitelist

View File

@@ -35,6 +35,10 @@
ass_image = 'icons/ass/assslime.png' ass_image = 'icons/ass/assslime.png'
blacklisted_quirks = list(/datum/quirk/glass_bones) blacklisted_quirks = list(/datum/quirk/glass_bones)
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
/datum/species/jelly/on_species_loss(mob/living/carbon/C) /datum/species/jelly/on_species_loss(mob/living/carbon/C)
C.faction -= "slime" C.faction -= "slime"
if(ishuman(C)) if(ishuman(C))

View File

@@ -34,6 +34,10 @@
ass_image = 'icons/ass/asslizard.png' ass_image = 'icons/ass/asslizard.png'
family_heirlooms = list(
/obj/item/toy/plush/lizardplushie
)
/datum/species/lizard/random_name(gender,unique,lastname) /datum/species/lizard/random_name(gender,unique,lastname)
if(unique) if(unique)
return random_unique_lizard_name(gender) return random_unique_lizard_name(gender)

View File

@@ -37,3 +37,8 @@
wagging_type = "mam_waggingtail" wagging_type = "mam_waggingtail"
species_category = SPECIES_CATEGORY_ROBOT species_category = SPECIES_CATEGORY_ROBOT
wings_icons = SPECIES_WINGS_ROBOT wings_icons = SPECIES_WINGS_ROBOT
family_heirlooms = list(
// They're also robots
/obj/item/stock_parts/cell/family
)

View File

@@ -20,6 +20,10 @@
if(!. || synthesizing) if(!. || synthesizing)
return return
// Check if this user can process nutriment
if(HAS_TRAIT(owner, TRAIT_NO_PROCESS_FOOD))
return
if(owner.nutrition <= hunger_threshold) if(owner.nutrition <= hunger_threshold)
synthesizing = TRUE synthesizing = TRUE
to_chat(owner, "<span class='notice'>You feel less hungry...</span>") to_chat(owner, "<span class='notice'>You feel less hungry...</span>")

View File

@@ -5,15 +5,34 @@
product_slogans = "Carts to go!" product_slogans = "Carts to go!"
icon_state = "cart" icon_state = "cart"
icon_deny = "cart-deny" icon_deny = "cart-deny"
products = list(/obj/item/cartridge/medical = 10, products = list(/obj/item/pda/heads = 10, // PDA
// Normal staff cards
/obj/item/cartridge/medical = 10,
/obj/item/cartridge/engineering = 10, /obj/item/cartridge/engineering = 10,
/obj/item/cartridge/security = 10, /obj/item/cartridge/security = 10,
/obj/item/cartridge/janitor = 10, /obj/item/cartridge/janitor = 10,
/obj/item/cartridge/signal/toxins = 10, /obj/item/cartridge/signal/toxins = 10,
/obj/item/cartridge/roboticist = 10, /obj/item/cartridge/roboticist = 10,
/obj/item/pda/heads = 10, /obj/item/cartridge/atmos = 10,
/obj/item/cartridge/chemistry = 10,
/obj/item/cartridge/detective = 10,
/obj/item/cartridge/lawyer = 10,
/obj/item/cartridge/curator = 10,
/obj/item/cartridge/bartender = 10,
// Virus cards
/obj/item/cartridge/virus/clown = 3,
/obj/item/cartridge/virus/mime = 3,
// Command staff cards
/obj/item/cartridge/captain = 3, /obj/item/cartridge/captain = 3,
/obj/item/cartridge/quartermaster = 10) /obj/item/cartridge/quartermaster = 10,
/obj/item/cartridge/head = 10,
/obj/item/cartridge/hos = 10,
/obj/item/cartridge/ce = 10,
/obj/item/cartridge/cmo = 10,
/obj/item/cartridge/rd = 10)
armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50) armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50)
refill_canister = /obj/item/vending_refill/cart refill_canister = /obj/item/vending_refill/cart
resistance_flags = FIRE_PROOF resistance_flags = FIRE_PROOF

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -190,3 +190,8 @@
loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
subcategory = LOADOUT_SUBCATEGORY_BACKPACK_ACCESSORIES subcategory = LOADOUT_SUBCATEGORY_BACKPACK_ACCESSORIES
cost = 0 cost = 0
// Moved here from quirks
/datum/gear/backpack/dyespray
name = "Hair dye spray"
path = /obj/item/dyespray