diff --git a/code/datums/outfits/_defines.dm b/code/datums/outfits/_defines.dm new file mode 100644 index 00000000000..d105fc0ebc9 --- /dev/null +++ b/code/datums/outfits/_defines.dm @@ -0,0 +1,3 @@ +#define OUTFIT_HAS_JETPACK 1 +#define OUTFIT_HAS_BACKPACK 2 +#define OUTFIT_EXTENDED_SURVIVAL 4 diff --git a/code/datums/outfits/horror_killers.dm b/code/datums/outfits/horror_killers.dm new file mode 100644 index 00000000000..1a6b284c63d --- /dev/null +++ b/code/datums/outfits/horror_killers.dm @@ -0,0 +1,61 @@ +/decl/hierarchy/outfit/tunnel_clown + name = "Tunnel Clown" + uniform = /obj/item/clothing/under/rank/clown + shoes = /obj/item/clothing/shoes/clown_shoes + gloves = /obj/item/clothing/gloves/black + mask = /obj/item/clothing/mask/gas/clown_hat + head = /obj/item/clothing/head/chaplain_hood + l_ear = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/thermal/plain/monocle + suit = /obj/item/clothing/suit/storage/hooded/chaplain_hoodie + r_pocket = /obj/item/weapon/bikehorn + r_hand = /obj/item/weapon/material/twohanded/fireaxe + + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/syndicate/station_access + id_pda_assignment = "Tunnel Clown!" + +/decl/hierarchy/outfit/masked_killer + name = "Masked Killer" + uniform = /obj/item/clothing/under/overalls + shoes = /obj/item/clothing/shoes/white + gloves = /obj/item/clothing/gloves/sterile/latex + mask = /obj/item/clothing/mask/surgical + head = /obj/item/clothing/head/welding + l_ear = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/thermal/plain/monocle + suit = /obj/item/clothing/suit/storage/apron + l_pocket = /obj/item/weapon/material/hatchet/tacknife + r_pocket = /obj/item/weapon/surgical/scalpel + r_hand = /obj/item/weapon/material/twohanded/fireaxe + +/decl/hierarchy/outfit/masked_killer/post_equip(var/mob/living/carbon/human/H) + var/victim = get_mannequin(H.ckey) + for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) + carried_item.add_blood(victim) //Oh yes, there will be blood.. just not blood from the killer because that's odd + +/decl/hierarchy/outfit/professional + name = "Professional" + uniform = /obj/item/clothing/under/suit_jacket{ starting_accessories=list(/obj/item/clothing/accessory/wcoat) } + shoes = /obj/item/clothing/shoes/black + gloves = /obj/item/clothing/gloves/black + l_ear = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/sunglasses + l_pocket = /obj/item/weapon/melee/energy/sword + + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/syndicate/station_access + pda_slot = slot_belt + pda_type = /obj/item/device/pda/heads + +/decl/hierarchy/outfit/professional/post_equip(var/mob/living/carbon/human/H) + var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(H) + for(var/obj/item/briefcase_item in sec_briefcase) + qdel(briefcase_item) + for(var/i=3, i>0, i--) + sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 + sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow + sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba + sec_briefcase.contents += new /obj/item/ammo_magazine/s357 + sec_briefcase.contents += new /obj/item/weapon/plastique + H.equip_to_slot_or_del(sec_briefcase, slot_l_hand) diff --git a/code/datums/outfits/jobs/_defines.dm b/code/datums/outfits/jobs/_defines.dm new file mode 100644 index 00000000000..8e394273152 --- /dev/null +++ b/code/datums/outfits/jobs/_defines.dm @@ -0,0 +1 @@ +#define OUTFIT_JOB_NAME(job_name) ("Job - " + job_name) diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm new file mode 100644 index 00000000000..e8974f09f9f --- /dev/null +++ b/code/datums/outfits/jobs/cargo.dm @@ -0,0 +1,28 @@ +/decl/hierarchy/outfit/job/cargo + l_ear = /obj/item/device/radio/headset/headset_cargo + hierarchy_type = /decl/hierarchy/outfit/job/cargo + +/decl/hierarchy/outfit/job/cargo/qm + name = OUTFIT_JOB_NAME("Cargo") + uniform = /obj/item/clothing/under/rank/cargo + shoes = /obj/item/clothing/shoes/brown + glasses = /obj/item/clothing/glasses/sunglasses + l_hand = /obj/item/weapon/clipboard + id_type = /obj/item/weapon/card/id/cargo/head + pda_type = /obj/item/device/pda/quartermaster + +/decl/hierarchy/outfit/job/cargo/cargo_tech + name = OUTFIT_JOB_NAME("Cargo technician") + uniform = /obj/item/clothing/under/rank/cargotech + id_type = /obj/item/weapon/card/id/cargo/cargo_tech + pda_type = /obj/item/device/pda/cargo + +/decl/hierarchy/outfit/job/cargo/mining + name = OUTFIT_JOB_NAME("Shaft miner") + uniform = /obj/item/clothing/under/rank/miner + backpack = /obj/item/weapon/storage/backpack/industrial + satchel_one = /obj/item/weapon/storage/backpack/satchel/eng + id_type = /obj/item/weapon/card/id/cargo/mining + pda_type = /obj/item/device/pda/shaftminer + backpack_contents = list(/obj/item/weapon/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1) + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL diff --git a/code/datums/outfits/jobs/civilian.dm b/code/datums/outfits/jobs/civilian.dm new file mode 100644 index 00000000000..bbd96990fb8 --- /dev/null +++ b/code/datums/outfits/jobs/civilian.dm @@ -0,0 +1,89 @@ +/decl/hierarchy/outfit/job/assistant + name = OUTFIT_JOB_NAME("Assistant") + id_type = /obj/item/weapon/card/id/assistant + +/decl/hierarchy/outfit/job/assistant/visitor + name = OUTFIT_JOB_NAME("Visitor") + id_pda_assignment = "Visitor" + uniform = /obj/item/clothing/under/assistantformal + +/decl/hierarchy/outfit/job/assistant/resident + name = OUTFIT_JOB_NAME("Resident") + id_pda_assignment = "Resident" + uniform = /obj/item/clothing/under/color/white + +/decl/hierarchy/outfit/job/service + l_ear = /obj/item/device/radio/headset/headset_service + hierarchy_type = /decl/hierarchy/outfit/job/service + +/decl/hierarchy/outfit/job/service/bartender + name = OUTFIT_JOB_NAME("Bartender") + uniform = /obj/item/clothing/under/rank/bartender + id_type = /obj/item/weapon/card/id/civilian/bartender + pda_type = /obj/item/device/pda/bar + backpack_contents = list(/obj/item/clothing/accessory/permit/gun/bar = 1) + +/decl/hierarchy/outfit/job/service/bartender/post_equip(mob/living/carbon/human/H) + ..() + for(var/obj/item/clothing/accessory/permit/gun/bar/permit in H.back.contents) + permit.set_name(H.real_name) + +/decl/hierarchy/outfit/job/service/bartender/barista + name = OUTFIT_JOB_NAME("Barista") + id_pda_assignment = "Barista" + backpack_contents = null + +/decl/hierarchy/outfit/job/service/chef + name = OUTFIT_JOB_NAME("Chef") + uniform = /obj/item/clothing/under/rank/chef + suit = /obj/item/clothing/suit/chef + head = /obj/item/clothing/head/chefhat + id_type = /obj/item/weapon/card/id/civilian/chef + pda_type = /obj/item/device/pda/chef + +/decl/hierarchy/outfit/job/service/chef/cook + name = OUTFIT_JOB_NAME("Cook") + id_pda_assignment = "Cook" + +/decl/hierarchy/outfit/job/service/gardener + name = OUTFIT_JOB_NAME("Gardener") + uniform = /obj/item/clothing/under/rank/hydroponics + suit = /obj/item/clothing/suit/storage/apron + gloves = /obj/item/clothing/gloves/botanic_leather + r_pocket = /obj/item/device/analyzer/plant_analyzer + backpack = /obj/item/weapon/storage/backpack/hydroponics + satchel_one = /obj/item/weapon/storage/backpack/satchel/hyd + id_type = /obj/item/weapon/card/id/civilian/botanist + pda_type = /obj/item/device/pda/botanist + messenger_bag = /obj/item/weapon/storage/backpack/messenger/hyd + +/decl/hierarchy/outfit/job/service/janitor + name = OUTFIT_JOB_NAME("Janitor") + uniform = /obj/item/clothing/under/rank/janitor + id_type = /obj/item/weapon/card/id/civilian/janitor + pda_type = /obj/item/device/pda/janitor + +/decl/hierarchy/outfit/job/librarian + name = OUTFIT_JOB_NAME("Librarian") + uniform = /obj/item/clothing/under/suit_jacket/red + l_hand = /obj/item/weapon/barcodescanner + id_type = /obj/item/weapon/card/id/civilian/librarian + pda_type = /obj/item/device/pda/librarian + +/decl/hierarchy/outfit/job/internal_affairs_agent + name = OUTFIT_JOB_NAME("Internal affairs agent") + l_ear = /obj/item/device/radio/headset/ia + uniform = /obj/item/clothing/under/rank/internalaffairs + suit = /obj/item/clothing/suit/storage/toggle/internalaffairs + shoes = /obj/item/clothing/shoes/brown + glasses = /obj/item/clothing/glasses/sunglasses/big + l_hand = /obj/item/weapon/storage/briefcase + id_type = /obj/item/weapon/card/id/civilian/internal_affairs_agent + pda_type = /obj/item/device/pda/lawyer + +/decl/hierarchy/outfit/job/chaplain + name = OUTFIT_JOB_NAME("Chaplain") + uniform = /obj/item/clothing/under/rank/chaplain + l_hand = /obj/item/weapon/storage/bible + id_type = /obj/item/weapon/card/id/civilian/chaplain + pda_type = /obj/item/device/pda/chaplain diff --git a/code/datums/outfits/jobs/command.dm b/code/datums/outfits/jobs/command.dm new file mode 100644 index 00000000000..5fb5530ee42 --- /dev/null +++ b/code/datums/outfits/jobs/command.dm @@ -0,0 +1,50 @@ +/decl/hierarchy/outfit/job/captain + name = OUTFIT_JOB_NAME("Captain") + head = /obj/item/clothing/head/caphat + glasses = /obj/item/clothing/glasses/sunglasses + uniform = /obj/item/clothing/under/rank/captain + l_ear = /obj/item/device/radio/headset/heads/captain + shoes = /obj/item/clothing/shoes/brown + backpack = /obj/item/weapon/storage/backpack/captain + satchel_one = /obj/item/weapon/storage/backpack/satchel/cap + id_type = /obj/item/weapon/card/id/gold/captain + pda_type = /obj/item/device/pda/captain + backpack_contents = list(/obj/item/weapon/storage/box/ids = 1) + messenger_bag = /obj/item/weapon/storage/backpack/messenger/com + +/decl/hierarchy/outfit/job/captain/post_equip(var/mob/living/carbon/human/H) + ..() + if(H.age>49) + // Since we can have something other than the default uniform at this + // point, check if we can actually attach the medal + var/obj/item/clothing/uniform = H.w_uniform + if(uniform) + var/obj/item/clothing/accessory/medal/gold/captain/medal = new() + if(uniform.can_attach_accessory(medal)) + uniform.attach_accessory(null, medal) + else + qdel(medal) + +/decl/hierarchy/outfit/job/hop + name = OUTFIT_JOB_NAME("Head of Personnel") + uniform = /obj/item/clothing/under/rank/head_of_personnel + l_ear = /obj/item/device/radio/headset/heads/hop + shoes = /obj/item/clothing/shoes/brown + id_type = /obj/item/weapon/card/id/silver/hop + pda_type = /obj/item/device/pda/heads/hop + backpack_contents = list(/obj/item/weapon/storage/box/ids = 1) + +/decl/hierarchy/outfit/job/secretary + name = OUTFIT_JOB_NAME("Command Secretary") + l_ear = /obj/item/device/radio/headset/headset_com + shoes = /obj/item/clothing/shoes/brown + id_type = /obj/item/weapon/card/id/silver/secretary + pda_type = /obj/item/device/pda/heads/hop + r_hand = /obj/item/weapon/storage/briefcase + +/decl/hierarchy/outfit/job/secretary/pre_equip(mob/living/carbon/human/H) + ..() + if(H.gender == FEMALE) + uniform = /obj/item/clothing/under/suit_jacket/female/skirt + else + uniform = /obj/item/clothing/under/suit_jacket/charcoal \ No newline at end of file diff --git a/code/datums/outfits/jobs/engineering.dm b/code/datums/outfits/jobs/engineering.dm new file mode 100644 index 00000000000..1eda9d5de0e --- /dev/null +++ b/code/datums/outfits/jobs/engineering.dm @@ -0,0 +1,34 @@ +/decl/hierarchy/outfit/job/engineering + hierarchy_type = /decl/hierarchy/outfit/job/engineering + belt = /obj/item/weapon/storage/belt/utility/full + l_ear = /obj/item/device/radio/headset/headset_eng + shoes = /obj/item/clothing/shoes/boots/workboots + backpack = /obj/item/weapon/storage/backpack/industrial + satchel_one = /obj/item/weapon/storage/backpack/satchel/eng + messenger_bag = /obj/item/weapon/storage/backpack/messenger/engi + pda_slot = slot_l_store + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL + +/decl/hierarchy/outfit/job/engineering/chief_engineer + name = OUTFIT_JOB_NAME("Chief engineer") + head = /obj/item/clothing/head/hardhat/white + uniform = /obj/item/clothing/under/rank/chief_engineer + l_ear = /obj/item/device/radio/headset/heads/ce + gloves = /obj/item/clothing/gloves/black + id_type = /obj/item/weapon/card/id/engineering/head + pda_type = /obj/item/device/pda/heads/ce + +/decl/hierarchy/outfit/job/engineering/engineer + name = OUTFIT_JOB_NAME("Engineer") + head = /obj/item/clothing/head/hardhat + uniform = /obj/item/clothing/under/rank/engineer + r_pocket = /obj/item/device/t_scanner + id_type = /obj/item/weapon/card/id/engineering/engineer + pda_type = /obj/item/device/pda/engineering + +/decl/hierarchy/outfit/job/engineering/atmos + name = OUTFIT_JOB_NAME("Atmospheric technician") + uniform = /obj/item/clothing/under/rank/atmospheric_technician + belt = /obj/item/weapon/storage/belt/utility/atmostech + id_type = /obj/item/weapon/card/id/engineering/atmos + pda_type = /obj/item/device/pda/atmos diff --git a/code/datums/outfits/jobs/job.dm b/code/datums/outfits/jobs/job.dm new file mode 100644 index 00000000000..68d4507fd4f --- /dev/null +++ b/code/datums/outfits/jobs/job.dm @@ -0,0 +1,21 @@ +/decl/hierarchy/outfit/job + name = "Standard Gear" + hierarchy_type = /decl/hierarchy/outfit/job + + uniform = /obj/item/clothing/under/color/grey + l_ear = /obj/item/device/radio/headset + shoes = /obj/item/clothing/shoes/black + + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/civilian + pda_slot = slot_belt + pda_type = /obj/item/device/pda + + flags = OUTFIT_HAS_BACKPACK + +/decl/hierarchy/outfit/job/equip_id(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/C = ..() + if(H.mind) + if(H.mind.initial_account) + C.associated_account_number = H.mind.initial_account.account_number + return C diff --git a/code/datums/outfits/jobs/medical.dm b/code/datums/outfits/jobs/medical.dm new file mode 100644 index 00000000000..cbfd7302617 --- /dev/null +++ b/code/datums/outfits/jobs/medical.dm @@ -0,0 +1,105 @@ +/decl/hierarchy/outfit/job/medical + hierarchy_type = /decl/hierarchy/outfit/job/medical + l_ear = /obj/item/device/radio/headset/headset_med + shoes = /obj/item/clothing/shoes/white + pda_type = /obj/item/device/pda/medical + pda_slot = slot_l_store + backpack = /obj/item/weapon/storage/backpack/medic + satchel_one = /obj/item/weapon/storage/backpack/satchel/med + messenger_bag = /obj/item/weapon/storage/backpack/messenger/med + +/decl/hierarchy/outfit/job/medical/cmo + name = OUTFIT_JOB_NAME("Chief Medical Officer") + l_ear =/obj/item/device/radio/headset/heads/cmo + uniform = /obj/item/clothing/under/rank/chief_medical_officer + suit = /obj/item/clothing/suit/storage/toggle/labcoat/cmo + shoes = /obj/item/clothing/shoes/brown + l_hand = /obj/item/weapon/storage/firstaid/adv + r_pocket = /obj/item/device/flashlight/pen + id_type = /obj/item/weapon/card/id/medical/head + pda_type = /obj/item/device/pda/heads/cmo + +/decl/hierarchy/outfit/job/medical/doctor + name = OUTFIT_JOB_NAME("Medical Doctor") + uniform = /obj/item/clothing/under/rank/medical + suit = /obj/item/clothing/suit/storage/toggle/labcoat + l_hand = /obj/item/weapon/storage/firstaid/adv + r_pocket = /obj/item/device/flashlight/pen + id_type = /obj/item/weapon/card/id/medical/doctor + +/decl/hierarchy/outfit/job/medical/doctor/emergency_physician + name = OUTFIT_JOB_NAME("Emergency Physician") + suit = /obj/item/clothing/suit/storage/toggle/fr_jacket + +/decl/hierarchy/outfit/job/medical/doctor/surgeon + name = OUTFIT_JOB_NAME("Surgeon") + uniform = /obj/item/clothing/under/rank/medical/scrubs + head = /obj/item/clothing/head/surgery/blue + +/decl/hierarchy/outfit/job/medical/doctor/virologist + name = OUTFIT_JOB_NAME("Virologist") + uniform = /obj/item/clothing/under/rank/virologist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/virologist + mask = /obj/item/clothing/mask/surgical + backpack = /obj/item/weapon/storage/backpack/virology + satchel_one = /obj/item/weapon/storage/backpack/satchel/vir + +/decl/hierarchy/outfit/job/medical/doctor/nurse + name = OUTFIT_JOB_NAME("Nurse") + suit = null + +/decl/hierarchy/outfit/job/medical/doctor/nurse/pre_equip(mob/living/carbon/human/H) + if(H.gender == FEMALE) + if(prob(50)) + uniform = /obj/item/clothing/under/rank/nursesuit + else + uniform = /obj/item/clothing/under/rank/nurse + head = /obj/item/clothing/head/nursehat + else + uniform = /obj/item/clothing/under/rank/medical/scrubs/purple + ..() + +/decl/hierarchy/outfit/job/medical/chemist + name = OUTFIT_JOB_NAME("Chemist") + uniform = /obj/item/clothing/under/rank/chemist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/chemist + backpack = /obj/item/weapon/storage/backpack/chemistry + satchel_one = /obj/item/weapon/storage/backpack/satchel/chem + id_type = /obj/item/weapon/card/id/medical/chemist + pda_type = /obj/item/device/pda/chemist + +/decl/hierarchy/outfit/job/medical/geneticist + name = OUTFIT_JOB_NAME("Geneticist") + uniform = /obj/item/clothing/under/rank/geneticist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/genetics + backpack = /obj/item/weapon/storage/backpack/genetics + r_pocket = /obj/item/device/flashlight/pen + satchel_one = /obj/item/weapon/storage/backpack/satchel/gen + id_type = /obj/item/weapon/card/id/medical/geneticist + pda_type = /obj/item/device/pda/geneticist + +/decl/hierarchy/outfit/job/medical/psychiatrist + name = OUTFIT_JOB_NAME("Psychiatrist") + uniform = /obj/item/clothing/under/rank/psych + suit = /obj/item/clothing/suit/storage/toggle/labcoat + shoes = /obj/item/clothing/shoes/laceup + id_type = /obj/item/weapon/card/id/medical/psychiatrist + +/decl/hierarchy/outfit/job/medical/psychiatrist/psychologist + name = OUTFIT_JOB_NAME("Psychologist") + uniform = /obj/item/clothing/under/rank/psych/turtleneck + +/decl/hierarchy/outfit/job/medical/paramedic + name = OUTFIT_JOB_NAME("Paramedic") + uniform = /obj/item/clothing/under/rank/medical/scrubs/black + suit = /obj/item/clothing/suit/storage/toggle/fr_jacket + shoes = /obj/item/clothing/shoes/boots/jackboots + l_hand = /obj/item/weapon/storage/firstaid/adv + belt = /obj/item/weapon/storage/belt/medical/emt + pda_slot = slot_l_store + id_type = /obj/item/weapon/card/id/medical/paramedic + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL + +/decl/hierarchy/outfit/job/medical/paramedic/emt + name = OUTFIT_JOB_NAME("Emergency Medical Technician") + uniform = /obj/item/clothing/under/rank/medical/paramedic diff --git a/code/datums/outfits/jobs/misc.dm b/code/datums/outfits/jobs/misc.dm new file mode 100644 index 00000000000..43bbd919f8e --- /dev/null +++ b/code/datums/outfits/jobs/misc.dm @@ -0,0 +1,11 @@ +/decl/hierarchy/outfit/job/silicon + head = /obj/item/clothing/head/cardborg + hierarchy_type = /decl/hierarchy/outfit/job/silicon + +/decl/hierarchy/outfit/job/silicon/ai + name = OUTFIT_JOB_NAME("AI") + suit = /obj/item/clothing/suit/straight_jacket + +/decl/hierarchy/outfit/job/silicon/cyborg + name = OUTFIT_JOB_NAME("Cyborg") + suit = /obj/item/clothing/suit/cardborg diff --git a/code/datums/outfits/jobs/science.dm b/code/datums/outfits/jobs/science.dm new file mode 100644 index 00000000000..80ecbfb54ad --- /dev/null +++ b/code/datums/outfits/jobs/science.dm @@ -0,0 +1,41 @@ +/decl/hierarchy/outfit/job/science + hierarchy_type = /decl/hierarchy/outfit/job/science + l_ear = /obj/item/device/radio/headset/headset_sci + suit = /obj/item/clothing/suit/storage/toggle/labcoat + shoes = /obj/item/clothing/shoes/white + pda_type = /obj/item/device/pda/science + backpack = /obj/item/weapon/storage/backpack/toxins + satchel_one = /obj/item/weapon/storage/backpack/satchel/tox + messenger_bag = /obj/item/weapon/storage/backpack/messenger/tox + +/decl/hierarchy/outfit/job/science/rd + name = OUTFIT_JOB_NAME("Research Director") + l_ear = /obj/item/device/radio/headset/heads/rd + uniform = /obj/item/clothing/under/rank/research_director + shoes = /obj/item/clothing/shoes/brown + l_hand = /obj/item/weapon/clipboard + id_type = /obj/item/weapon/card/id/science/head + pda_type = /obj/item/device/pda/heads/rd + +/decl/hierarchy/outfit/job/science/scientist + name = OUTFIT_JOB_NAME("Scientist") + uniform = /obj/item/clothing/under/rank/scientist + id_type = /obj/item/weapon/card/id/science/scientist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/science + +/decl/hierarchy/outfit/job/science/xenobiologist + name = OUTFIT_JOB_NAME("Xenobiologist") + uniform = /obj/item/clothing/under/rank/scientist + id_type = /obj/item/weapon/card/id/science/xenobiologist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/science + +/decl/hierarchy/outfit/job/science/roboticist + name = OUTFIT_JOB_NAME("Roboticist") + uniform = /obj/item/clothing/under/rank/scientist + shoes = /obj/item/clothing/shoes/black + belt = /obj/item/weapon/storage/belt/utility/full + id_type = /obj/item/weapon/card/id/science/roboticist + pda_slot = slot_r_store + pda_type = /obj/item/device/pda/roboticist + backpack = /obj/item/weapon/storage/backpack + satchel_one = /obj/item/weapon/storage/backpack/satchel/norm \ No newline at end of file diff --git a/code/datums/outfits/jobs/security.dm b/code/datums/outfits/jobs/security.dm new file mode 100644 index 00000000000..aee81c7b776 --- /dev/null +++ b/code/datums/outfits/jobs/security.dm @@ -0,0 +1,52 @@ +/decl/hierarchy/outfit/job/security + hierarchy_type = /decl/hierarchy/outfit/job/security + glasses = /obj/item/clothing/glasses/sunglasses/sechud + l_ear = /obj/item/device/radio/headset/headset_sec + gloves = /obj/item/clothing/gloves/black + shoes = /obj/item/clothing/shoes/boots/jackboots + backpack = /obj/item/weapon/storage/backpack/security + satchel_one = /obj/item/weapon/storage/backpack/satchel/sec + backpack_contents = list(/obj/item/weapon/handcuffs = 1) + messenger_bag = /obj/item/weapon/storage/backpack/messenger/sec + +/decl/hierarchy/outfit/job/security/hos + name = OUTFIT_JOB_NAME("Head of security") + l_ear = /obj/item/device/radio/headset/heads/hos + uniform = /obj/item/clothing/under/rank/head_of_security + id_type = /obj/item/weapon/card/id/security/head + pda_type = /obj/item/device/pda/heads/hos + backpack_contents = list(/obj/item/weapon/handcuffs = 1) + +/decl/hierarchy/outfit/job/security/warden + name = OUTFIT_JOB_NAME("Warden") + uniform = /obj/item/clothing/under/rank/warden + l_pocket = /obj/item/device/flash + id_type = /obj/item/weapon/card/id/security //warden + pda_type = /obj/item/device/pda/warden + +/decl/hierarchy/outfit/job/security/detective + name = OUTFIT_JOB_NAME("Detective") + head = /obj/item/clothing/head/det + uniform = /obj/item/clothing/under/det + suit = /obj/item/clothing/suit/storage/det_trench + l_pocket = /obj/item/weapon/flame/lighter/zippo + shoes = /obj/item/clothing/shoes/laceup + r_hand = /obj/item/weapon/storage/briefcase/crimekit + id_type = /obj/item/weapon/card/id/security //detective + pda_type = /obj/item/device/pda/detective + backpack = /obj/item/weapon/storage/backpack + satchel_one = /obj/item/weapon/storage/backpack/satchel/norm + backpack_contents = list(/obj/item/weapon/storage/box/evidence = 1) + +/decl/hierarchy/outfit/job/security/detective/forensic + name = OUTFIT_JOB_NAME("Forensic technician") + head = null + suit = /obj/item/clothing/suit/storage/forensics/blue + +/decl/hierarchy/outfit/job/security/officer + name = OUTFIT_JOB_NAME("Security Officer") + uniform = /obj/item/clothing/under/rank/security + l_pocket = /obj/item/device/flash + r_pocket = /obj/item/weapon/handcuffs + id_type = /obj/item/weapon/card/id/security + pda_type = /obj/item/device/pda/security diff --git a/code/datums/outfits/military/fleet.dm b/code/datums/outfits/military/fleet.dm new file mode 100644 index 00000000000..9960372505f --- /dev/null +++ b/code/datums/outfits/military/fleet.dm @@ -0,0 +1,22 @@ +/decl/hierarchy/outfit/military/fleet/pt + name = "Fleet Uniform - PT" + uniform = /obj/item/clothing/under/pt/fleet + shoes = /obj/item/clothing/shoes/black + +/decl/hierarchy/outfit/military/fleet/utility + name = "Fleet Uniform - Utility" + uniform = /obj/item/clothing/under/utility/fleet + shoes = /obj/item/clothing/shoes/boots/jackboots + +/decl/hierarchy/outfit/military/fleet/service + name = "Fleet Uniform - Service" + uniform = /obj/item/clothing/under/service/fleet + shoes = /obj/item/clothing/shoes/dress/white + +/decl/hierarchy/outfit/military/fleet/dress + name = "Fleet Uniform - Dress" + uniform = /obj/item/clothing/under/service/fleet + shoes = /obj/item/clothing/shoes/dress/white + suit = /obj/item/clothing/suit/storage/toggle/dress/fleet + gloves = /obj/item/clothing/gloves/white + head = /obj/item/clothing/head/dress/fleet \ No newline at end of file diff --git a/code/datums/outfits/military/marines.dm b/code/datums/outfits/military/marines.dm new file mode 100644 index 00000000000..3fd59906531 --- /dev/null +++ b/code/datums/outfits/military/marines.dm @@ -0,0 +1,23 @@ +/decl/hierarchy/outfit/military/marine/pt + name = "Marine Uniform - PT" + uniform = /obj/item/clothing/under/pt/marine + shoes = /obj/item/clothing/shoes/black + +/decl/hierarchy/outfit/military/marine/utility + name = "Marine Uniform - Utility" + uniform = /obj/item/clothing/under/utility/marine + shoes = /obj/item/clothing/shoes/boots/jungle + +/decl/hierarchy/outfit/military/marine/service + name = "Marine Uniform - Service" + uniform = /obj/item/clothing/under/service/marine + shoes = /obj/item/clothing/shoes/dress + suit = /obj/item/clothing/suit/storage/service/marine + +/decl/hierarchy/outfit/military/marine/dress + name = "Marine Uniform - Dress" + uniform = /obj/item/clothing/under/mildress/marine + shoes = /obj/item/clothing/shoes/dress/white + suit = /obj/item/clothing/suit/dress/marine + gloves = /obj/item/clothing/gloves/white + head = /obj/item/clothing/head/dress/marine \ No newline at end of file diff --git a/code/datums/outfits/military/military.dm b/code/datums/outfits/military/military.dm new file mode 100644 index 00000000000..eb00eb6871d --- /dev/null +++ b/code/datums/outfits/military/military.dm @@ -0,0 +1,5 @@ +/decl/hierarchy/outfit/military + name = "Military Uniform" + hierarchy_type = /decl/hierarchy/outfit/military + + l_ear = /obj/item/device/radio/headset \ No newline at end of file diff --git a/code/datums/outfits/military/sifguard.dm b/code/datums/outfits/military/sifguard.dm new file mode 100644 index 00000000000..f417b55fe24 --- /dev/null +++ b/code/datums/outfits/military/sifguard.dm @@ -0,0 +1,23 @@ +/decl/hierarchy/outfit/military/sifguard/pt + name = "SifGuard Uniform - PT" + uniform = /obj/item/clothing/under/pt/expeditionary + shoes = /obj/item/clothing/shoes/black + +/decl/hierarchy/outfit/military/sifguard/utility + name = "SifGuard Uniform - Utility" + uniform = /obj/item/clothing/under/utility/expeditionary + shoes = /obj/item/clothing/shoes/boots/jackboots + +/decl/hierarchy/outfit/military/sifguard/service + name = "SifGuard Uniform - Service" + uniform = /obj/item/clothing/under/utility/expeditionary + shoes = /obj/item/clothing/shoes/boots/jackboots + suit = /obj/item/clothing/suit/storage/service/expeditionary + +/decl/hierarchy/outfit/military/sifguard/dress + name = "SifGuard Uniform - Dress" + uniform = /obj/item/clothing/under/mildress/expeditionary + shoes = /obj/item/clothing/shoes/dress + suit = /obj/item/clothing/suit/dress/expedition + gloves = /obj/item/clothing/gloves/white + head = /obj/item/clothing/head/dress/expedition \ No newline at end of file diff --git a/code/datums/outfits/misc.dm b/code/datums/outfits/misc.dm new file mode 100644 index 00000000000..f7dc6e0f336 --- /dev/null +++ b/code/datums/outfits/misc.dm @@ -0,0 +1,55 @@ +/decl/hierarchy/outfit/standard_space_gear + name = "Standard space gear" + shoes = /obj/item/clothing/shoes/black + head = /obj/item/clothing/head/helmet/space + suit = /obj/item/clothing/suit/space + uniform = /obj/item/clothing/under/color/grey + back = /obj/item/weapon/tank/jetpack/oxygen + mask = /obj/item/clothing/mask/breath + flags = OUTFIT_HAS_JETPACK + +/decl/hierarchy/outfit/emergency_space_gear + name = "Emergency space gear" + shoes = /obj/item/clothing/shoes/black + head = /obj/item/clothing/head/helmet/space/emergency + suit = /obj/item/clothing/suit/space/emergency + uniform = /obj/item/clothing/under/color/grey + back = /obj/item/weapon/tank/oxygen + mask = /obj/item/clothing/mask/breath + +/decl/hierarchy/outfit/soviet_soldier + name = "Soviet soldier" + uniform = /obj/item/clothing/under/soviet + shoes = /obj/item/clothing/shoes/boots/combat + head = /obj/item/clothing/head/ushanka + gloves = /obj/item/clothing/gloves/combat + back = /obj/item/weapon/storage/backpack/satchel + belt = /obj/item/weapon/gun/projectile/revolver/mateba + +/decl/hierarchy/outfit/soviet_soldier/admiral + name = "Soviet admiral" + head = /obj/item/clothing/head/hgpiratecap + l_ear = /obj/item/device/radio/headset/heads/captain + glasses = /obj/item/clothing/glasses/thermal/plain/eyepatch + suit = /obj/item/clothing/suit/hgpirate + + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/centcom //station + id_pda_assignment = "Admiral" + +/decl/hierarchy/outfit/merchant + name = "Merchant" + shoes = /obj/item/clothing/shoes/black + l_ear = /obj/item/device/radio/headset + uniform = /obj/item/clothing/under/color/grey + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/civilian //merchant + pda_slot = slot_r_store + pda_type = /obj/item/device/pda/chef //cause I like the look + id_pda_assignment = "Merchant" + +/decl/hierarchy/outfit/merchant/vox + name = "Merchant - Vox" + shoes = /obj/item/clothing/shoes/boots/jackboots/toeless + uniform = /obj/item/clothing/under/vox/vox_robes + suit = /obj/item/clothing/suit/armor/vox_scrap \ No newline at end of file diff --git a/code/datums/outfits/nanotrasen.dm b/code/datums/outfits/nanotrasen.dm new file mode 100644 index 00000000000..4fd219685ba --- /dev/null +++ b/code/datums/outfits/nanotrasen.dm @@ -0,0 +1,32 @@ +/decl/hierarchy/outfit/nanotrasen + hierarchy_type = /decl/hierarchy/outfit/nanotrasen + uniform = /obj/item/clothing/under/rank/centcom + shoes = /obj/item/clothing/shoes/laceup + gloves = /obj/item/clothing/gloves/white + l_ear = /obj/item/device/radio/headset/heads/hop + glasses = /obj/item/clothing/glasses/sunglasses + + id_slot = slot_wear_id + id_type = /obj/item/weapon/card/id/centcom //station + pda_slot = slot_r_store + pda_type = /obj/item/device/pda/heads + +/decl/hierarchy/outfit/nanotrasen/representative + name = "Nanotrasen representative" + belt = /obj/item/weapon/clipboard + id_pda_assignment = "NanoTrasen Navy Representative" + +/decl/hierarchy/outfit/nanotrasen/officer + name = "Nanotrasen officer" + head = /obj/item/clothing/head/beret/centcom/officer + l_ear = /obj/item/device/radio/headset/heads/captain + belt = /obj/item/weapon/gun/energy + id_pda_assignment = "NanoTrasen Navy Officer" + +/decl/hierarchy/outfit/nanotrasen/captain + name = "Nanotrasen captain" + uniform = /obj/item/clothing/under/rank/centcom_captain + l_ear = /obj/item/device/radio/headset/heads/captain + head = /obj/item/clothing/head/beret/centcom/captain + belt = /obj/item/weapon/gun/energy + id_pda_assignment = "NanoTrasen Navy Captain" diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm new file mode 100644 index 00000000000..93ea518df1a --- /dev/null +++ b/code/datums/outfits/outfit.dm @@ -0,0 +1,171 @@ +var/list/outfits_decls_ +var/list/outfits_decls_root_ +var/list/outfits_decls_by_type_ + +/proc/outfit_by_type(var/outfit_type) + if(!outfits_decls_root_) + init_outfit_decls() + return outfits_decls_by_type_[outfit_type] + +/proc/outfits() + if(!outfits_decls_root_) + init_outfit_decls() + return outfits_decls_ + +/proc/init_outfit_decls() + if(outfits_decls_root_) + return + outfits_decls_ = list() + outfits_decls_by_type_ = list() + outfits_decls_root_ = new/decl/hierarchy/outfit() + +/decl/hierarchy/outfit + name = "Naked" + + var/uniform = null + var/suit = null + var/back = null + var/belt = null + var/gloves = null + var/shoes = null + var/head = null + var/mask = null + var/l_ear = null + var/r_ear = null + var/glasses = null + var/id = null + var/l_pocket = null + var/r_pocket = null + var/suit_store = null + var/r_hand = null + var/l_hand = null + var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format + + var/id_type + var/id_desc + var/id_slot + + var/pda_type + var/pda_slot + + var/id_pda_assignment + + var/backpack = /obj/item/weapon/storage/backpack + var/satchel_one = /obj/item/weapon/storage/backpack/satchel/norm + var/satchel_two = /obj/item/weapon/storage/backpack/satchel + var/messenger_bag = /obj/item/weapon/storage/backpack/messenger + + var/flags // Specific flags + +/decl/hierarchy/outfit/New() + ..() + + if(is_hidden_category()) + return + outfits_decls_by_type_[type] = src + dd_insertObjectList(outfits_decls_, src) + +/decl/hierarchy/outfit/proc/pre_equip(mob/living/carbon/human/H) + if(flags & OUTFIT_HAS_BACKPACK) + switch(H.backbag) + if(2) back = backpack + if(3) back = satchel_one + if(4) back = satchel_two + if(5) back = messenger_bag + else back = null + +/decl/hierarchy/outfit/proc/post_equip(mob/living/carbon/human/H) + if(flags & OUTFIT_HAS_JETPACK) + var/obj/item/weapon/tank/jetpack/J = locate(/obj/item/weapon/tank/jetpack) in H + if(!J) + return + J.toggle() + J.toggle_valve() + +/decl/hierarchy/outfit/proc/equip(mob/living/carbon/human/H, var/rank, var/assignment) + equip_base(H) + + rank = id_pda_assignment || rank + assignment = id_pda_assignment || assignment || rank + var/obj/item/weapon/card/id/W = equip_id(H, rank, assignment) + if(W) + rank = W.rank + assignment = W.assignment + equip_pda(H, rank, assignment) + + for(var/path in backpack_contents) + var/number = backpack_contents[path] + for(var/i=0,i49) - // Since we can have something other than the default uniform at this - // point, check if we can actually attach the medal - var/obj/item/clothing/uniform = H.w_uniform - var/obj/item/clothing/accessory/medal/gold/captain/medal = new() - - if(uniform && uniform.can_attach_accessory(medal)) - uniform.attach_accessory(null, medal) - else - qdel(medal) - H.equip_to_slot_or_del(new /obj/item/device/pda/captain(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/caphat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) - - - H.implant_loyalty() - - return 1 +/datum/job/captain/equip(var/mob/living/carbon/human/H) + . = ..() + if(.) + H.implant_loyalty(src) /datum/job/captain/get_access() return get_all_station_access() - - /datum/job/hop title = "Head of Personnel" flag = HOP @@ -73,7 +44,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) supervisors = "the Colony Director" selection_color = "#2F2F7F" idtype = /obj/item/weapon/card/id/silver - alt_titles = list("Crew Resources Officer") req_admin_notify = 1 minimal_player_age = 10 economic_modifier = 10 @@ -81,6 +51,9 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) minimum_character_age = 25 ideal_character_age = 50 + outfit_type = /decl/hierarchy/outfit/job/hop + alt_titles = list("Crew Resources Officer") + access = list(access_security, access_sec_doors, access_brig, access_forensics_lockers, access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, @@ -94,26 +67,6 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, access_hop, access_RC_announce, access_keycard_auth, access_gateway) - -/datum/job/hop/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_personnel(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) - H.implant_loyalty() - return 1 - - - /datum/job/secretary title = "Command Secretary" flag = BRIDGE @@ -126,25 +79,11 @@ var/datum/announcement/minor/captain_announcement = new(do_newscast = 1) supervisors = "command staff" selection_color = "#2F2F7F" idtype = /obj/item/weapon/card/id/silver - alt_titles = list("Command Liaison", "Bridge Secretary") minimal_player_age = 5 economic_modifier = 7 access = list(access_heads) minimal_access = list(access_heads) -/datum/job/secretary/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_com(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hop(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - if(H.gender == FEMALE) - H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/female/skirt(H), slot_w_uniform) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/charcoal(H), slot_w_uniform) - return 1 \ No newline at end of file + outfit_type = /decl/hierarchy/outfit/job/secretary + alt_titles = list("Command Liaison", "Bridge Secretary") \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 4cdf5fcad44..854861e230c 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -12,29 +12,9 @@ idtype = /obj/item/weapon/card/id/civilian access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_bar) - alt_titles = list("Barista") - - -/datum/job/bartender/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/bartender(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/bar(H), slot_belt) - if(has_alt_title(H, alt_title,"Bartender")) - var/obj/item/clothing/accessory/permit/gun/bar/permit = new(H) - if(H.backbag == 1) - H.equip_to_slot_or_del(permit, slot_l_hand) - else - H.equip_to_slot_or_del(permit, slot_in_backpack) - permit.set_name(H.real_name) - return 1 + outfit_type = /decl/hierarchy/outfit/job/service/bartender + alt_titles = list("Barista" = /decl/hierarchy/outfit/job/service/bartender/barista) /datum/job/chef @@ -50,21 +30,10 @@ idtype = /obj/item/weapon/card/id/civilian access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_kitchen) + + outfit_type = /decl/hierarchy/outfit/job/service/chef alt_titles = list("Cook") - -/datum/job/chef/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt) - return 1 - - - /datum/job/hydro title = "Gardener" flag = BOTANIST @@ -78,27 +47,10 @@ idtype = /obj/item/weapon/card/id/civilian access = list(access_hydroponics, access_bar, access_kitchen) minimal_access = list(access_hydroponics) + + outfit_type = /decl/hierarchy/outfit/job/service/gardener alt_titles = list("Hydroponicist") - -/datum/job/hydro/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/hydroponics(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/botanic_leather(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/apron(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/hydroponics(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/hyd(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/hyd(H), slot_back) - return 1 - - - //Cargo /datum/job/qm title = "Quartermaster" @@ -114,23 +66,11 @@ economic_modifier = 5 access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) - alt_titles = list("Supply Chief") ideal_character_age = 40 - -/datum/job/qm/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargo(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/quartermaster(H), slot_belt) -// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/cargo/qm + alt_titles = list("Supply Chief") /datum/job/cargo_tech title = "Cargo Technician" @@ -146,16 +86,7 @@ access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting) -/datum/job/cargo_tech/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/cargotech(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt) -// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/cargo/cargo_tech /datum/job/mining title = "Shaft Miner" @@ -171,33 +102,11 @@ economic_modifier = 5 access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_mining, access_mining_station) minimal_access = list(access_mining, access_mining_station, access_mailsorting) + + outfit_type = /decl/hierarchy/outfit/job/cargo/mining alt_titles = list("Drill Technician","Prospector") -/datum/job/mining/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cargo (H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/miner(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/shaftminer(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) -// H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_l_store) - else - H.equip_to_slot_or_del(new /obj/item/weapon/crowbar(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/ore(H), slot_in_backpack) - return 1 - -/datum/job/mining/equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - H.species.equip_survival_gear(H,1) - return 1 - +//Service /datum/job/janitor title = "Janitor" flag = JANITOR @@ -211,19 +120,10 @@ idtype = /obj/item/weapon/card/id/civilian access = list(access_janitor, access_maint_tunnels) minimal_access = list(access_janitor, access_maint_tunnels) + + outfit_type = /decl/hierarchy/outfit/job/service/janitor alt_titles = list("Custodian", "Sanitation Technician") - -/datum/job/janitor/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_service(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt) - return 1 - - - //More or less assistants /datum/job/librarian title = "Librarian" @@ -238,19 +138,10 @@ idtype = /obj/item/weapon/card/id/civilian access = list(access_library, access_maint_tunnels) minimal_access = list(access_library) + + outfit_type = /decl/hierarchy/outfit/job/librarian alt_titles = list("Journalist", "Professor", "Historian", "Writer") - -/datum/job/librarian/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/red(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand) - return 1 - - - //var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds. /datum/job/lawyer title = "Internal Affairs Agent" @@ -268,23 +159,9 @@ minimal_access = list(access_lawyer, access_sec_doors, access_heads) minimal_player_age = 7 + outfit_type = /decl/hierarchy/outfit/job/internal_affairs_agent -/datum/job/lawyer/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/ia(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/internalaffairs(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - - H.implant_loyalty() - - - return 1 +/datum/job/lawyer/equip(var/mob/living/carbon/human/H) + . = ..() + if(.) + H.implant_loyalty(H) \ No newline at end of file diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index 2533bb72043..e9d7af31cc4 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -14,18 +14,18 @@ minimal_access = list(access_chapel_office, access_crematorium) alt_titles = list("Counselor") + outfit_type = /decl/hierarchy/outfit/job/chaplain /datum/job/chaplain/equip(var/mob/living/carbon/human/H, var/alt_title, var/ask_questions = TRUE) - if(!H) return 0 - - var/obj/item/weapon/storage/bible/B = new /obj/item/weapon/storage/bible(H) //BS12 EDIT - H.equip_to_slot_or_del(B, slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + . = ..() + if(!.) + return if(!ask_questions) - return 1 + return + var/obj/item/weapon/storage/bible/B = locate(/obj/item/weapon/storage/bible) in H + if(!B) + return spawn(0) var/religion_name = "Christianity" @@ -33,7 +33,6 @@ if (!new_religion) new_religion = religion_name - switch(lowertext(new_religion)) if("christianity") B.name = pick("The Holy Bible","The Dead Sea Scrolls") @@ -83,10 +82,6 @@ if("Koran") B.icon_state = "koran" B.item_state = "koran" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.set_dir(4) if("Scrapbook") B.icon_state = "scrapbook" B.item_state = "scrapbook" @@ -102,10 +97,6 @@ if("Athiest") B.icon_state = "athiest" B.item_state = "syringe_kit" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.set_dir(10) if("Tome") B.icon_state = "tome" B.item_state = "syringe_kit" @@ -118,10 +109,6 @@ if("Scientology") B.icon_state = "scientology" B.item_state = "scientology" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.set_dir(8) if("the bible melts") B.icon_state = "melted" B.item_state = "melted" @@ -129,13 +116,8 @@ B.icon_state = "necronomicon" B.item_state = "necronomicon" else - // if christian bible, revert to default B.icon_state = "bible" B.item_state = "bible" - for(var/area/chapel/main/A in world) - for(var/turf/T in A.contents) - if(T.icon_state == "carpetsymbol") - T.set_dir(2) H.update_inv_l_hand() // so that it updates the bible's item_state in his hand @@ -144,7 +126,7 @@ accepted = 1 if("No") if(outoftime) - H << "Welp, out of time, buddy. You're stuck. Next time choose faster." + to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.") accepted = 1 if(ticker) diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index e0efde55ad9..10aed0ea850 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -27,28 +27,7 @@ access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload) minimal_player_age = 7 - -/datum/job/chief_engineer/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/ce(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_engineer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/ce(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat/white(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - return 1 - -/datum/job/chief_engineer/equip_survival(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.species.equip_survival_gear(H,1) - return 1 - + outfit_type = /decl/hierarchy/outfit/job/engineering/chief_engineer /datum/job/engineer title = "Station Engineer" @@ -68,27 +47,7 @@ minimal_player_age = 3 -/datum/job/engineer/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/eng(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/engineer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/head/hardhat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/device/t_scanner(H), slot_r_store) - H.equip_to_slot_or_del(new /obj/item/device/pda/engineering(H), slot_l_store) - return 1 - -/datum/job/engineer/equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - H.species.equip_survival_gear(H,1) - return 1 - + outfit_type = /decl/hierarchy/outfit/job/engineering/engineer /datum/job/atmos title = "Atmospheric Technician" @@ -107,21 +66,4 @@ minimal_player_age = 3 -/datum/job/atmos/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_eng(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/engi(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/atmospheric_technician(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/workboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/atmos(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt) - return 1 - -/datum/job/atmos/equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - H.species.equip_survival_gear(H,1) - return 1 + outfit_type = /decl/hierarchy/outfit/job/engineering/atmos \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index cc1130f43d3..5614e1d738f 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -25,9 +25,21 @@ var/account_allowed = 1 // Does this job type come with a station account? var/economic_modifier = 2 // With how much does this job modify the initial account amount? -/datum/job/proc/equip(var/mob/living/carbon/human/H) + var/outfit_type + +/datum/job/proc/equip(var/mob/living/carbon/human/H, var/alt_title) + var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title) + if(!outfit) + return FALSE + . = outfit.equip(H, title, alt_title) return 1 +/datum/job/proc/get_outfit(var/mob/living/carbon/human/H, var/alt_title) + if(alt_title && alt_titles) + . = alt_titles[alt_title] + . = . || outfit_type + . = outfit_by_type(.) + /datum/job/proc/equip_backpack(var/mob/living/carbon/human/H) switch(H.backbag) if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) @@ -35,11 +47,6 @@ if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back) -/datum/job/proc/equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - H.species.equip_survival_gear(H,0) - return 1 - /datum/job/proc/setup_account(var/mob/living/carbon/human/H) if(!account_allowed || (H.mind && H.mind.initial_account)) return @@ -71,9 +78,12 @@ H << "Your account number is: [M.account_number], your account pin is: [M.remote_access_pin]" -// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/del() +// overrideable separately so AIs/borgs can have cardborg hats without unneccessary new()/qdel() /datum/job/proc/equip_preview(mob/living/carbon/human/H, var/alt_title) - . = equip(H, alt_title) + var/decl/hierarchy/outfit/outfit = get_outfit(H, alt_title) + if(!outfit) + return FALSE + . = outfit.equip_base(H, title, alt_title) /datum/job/proc/get_access() if(!config || config.jobs_have_minimal_access) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 11cc55e24b5..a5e6498dec8 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -23,21 +23,7 @@ minimal_player_age = 10 ideal_character_age = 50 -/datum/job/cmo/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/cmo(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chief_medical_officer(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/cmo(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/cmo(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H), slot_s_store) - return 1 + outfit_type = /decl/hierarchy/outfit/job/medical/cmo /datum/job/doctor title = "Medical Doctor" @@ -49,58 +35,16 @@ spawn_positions = 3 supervisors = "the chief medical officer" selection_color = "#013D3B" - idtype = /obj/item/weapon/card/id/medical + idtype = /obj/item/weapon/card/id/medical/doctor economic_modifier = 7 access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_eva) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_virology, access_eva) - alt_titles = list("Surgeon","Emergency Physician","Nurse","Virologist") - -/datum/job/doctor/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back) - if(has_alt_title(H, alt_title,"Emergency Physician")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit) - else if(has_alt_title(H, alt_title,"Surgeon")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/surgery/blue(H), slot_head) - else if(has_alt_title(H, alt_title,"Virologist")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/virologist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/virologist(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(H), slot_wear_mask) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/virology(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/vir(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/viro(H), slot_back) - else if(has_alt_title(H, alt_title,"Medical Doctor")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - else if(has_alt_title(H, alt_title,"Nurse")) - if(H.gender == FEMALE) - if(prob(50)) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/nursesuit(H), slot_w_uniform) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/nurse(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/head/nursehat(H), slot_head) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs/purple(H), slot_w_uniform) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/device/healthanalyzer(H), slot_s_store) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/medical/doctor + alt_titles = list( + "Surgeon" = /decl/hierarchy/outfit/job/medical/doctor/surgeon, + "Emergency Physician" = /decl/hierarchy/outfit/job/medical/doctor/emergency_physician, + "Nurse" = /decl/hierarchy/outfit/job/medical/doctor/nurse, + "Virologist" = /decl/hierarchy/outfit/job/medical/doctor/virologist) //Chemist is a medical job damnit //YEAH FUCK YOU SCIENCE -Pete //Guys, behave -Erro /datum/job/chemist @@ -113,7 +57,7 @@ spawn_positions = 2 supervisors = "the chief medical officer" selection_color = "#013D3B" - idtype = /obj/item/weapon/card/id/medical + idtype = /obj/item/weapon/card/id/medical/chemist economic_modifier = 5 access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics) minimal_access = list(access_medical, access_medical_equip, access_chemistry) @@ -121,20 +65,7 @@ minimal_player_age = 3 -/datum/job/chemist/equip(var/mob/living/carbon/human/H) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chemist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/chemistry(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/chem(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/chem(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/chemist(H), slot_wear_suit) - return 1 - + outfit_type = /decl/hierarchy/outfit/job/medical/chemist /* I'm commenting out Geneticist so you can't actually see it in the job menu, given that you can't play as one - Jon. /datum/job/geneticist @@ -147,23 +78,12 @@ spawn_positions = 0 supervisors = "the chief medical officer and research director" selection_color = "#013D3B" + idtype = /obj/item/weapon/card/id/medical/geneticist economic_modifier = 7 access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_research) minimal_access = list(access_medical, access_morgue, access_genetics, access_research) -/datum/job/geneticist/equip(var/mob/living/carbon/human/H) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_medsci(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/geneticist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/genetics(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/gen(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/genetics(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) - return 1 + outfit_type = /decl/hierarchy/outfit/job/medical/geneticist */ /datum/job/psychiatrist @@ -177,29 +97,11 @@ economic_modifier = 5 supervisors = "the chief medical officer" selection_color = "#013D3B" - idtype = /obj/item/weapon/card/id/medical + idtype = /obj/item/weapon/card/id/medical/psychiatrist access = list(access_medical, access_medical_equip, access_morgue, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_psychiatrist) - alt_titles = list("Psychologist") - -/datum/job/psychiatrist/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back) - if(has_alt_title(H, alt_title,"Psychiatrist")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych(H), slot_w_uniform) - else if(has_alt_title(H, alt_title,"Psychologist")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/psych/turtleneck(H), slot_w_uniform) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - + outfit_type = /decl/hierarchy/outfit/job/medical/psychiatrist + alt_titles = list("Psychologist" = /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist) /datum/job/Paramedic title = "Paramedic" @@ -211,35 +113,9 @@ spawn_positions = 2 supervisors = "the chief medical officer" selection_color = "#013D3B" - idtype = /obj/item/weapon/card/id/medical + idtype = /obj/item/weapon/card/id/medical/paramedic economic_modifier = 4 access = list(access_medical, access_medical_equip, access_morgue, access_surgery, access_chemistry, access_virology, access_eva, access_maint_tunnels, access_external_airlocks, access_psychiatrist) minimal_access = list(access_medical, access_medical_equip, access_morgue, access_eva, access_maint_tunnels, access_external_airlocks) - alt_titles = list("Emergency Medical Technician") - -/datum/job/Paramedic/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_med(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/adv(H), slot_l_hand) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/med(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/med(H), slot_back) - if(has_alt_title(H, alt_title,"Emergency Medical Technician")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/paramedic(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit) - else if(has_alt_title(H, alt_title,"Paramedic")) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/scrubs(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/fr_jacket(H), slot_wear_suit) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical/emt(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/device/pda/medical(H), slot_l_store) - return 1 - -/datum/job/Paramedic/equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - H.species.equip_survival_gear(H,1) - return 1 + outfit_type = /decl/hierarchy/outfit/job/medical/paramedic + alt_titles = list("Emergency Medical Technician" = /decl/hierarchy/outfit/job/medical/paramedic/emt) \ No newline at end of file diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 01ea140c10c..7762e3f6ddd 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -20,28 +20,13 @@ access_tox_storage, access_teleporter, access_sec_doors, access_research, access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, access_tcomsat, access_gateway, access_xenoarch) - alt_titles = list("Research Supervisor") minimum_character_age = 25 minimal_player_age = 14 ideal_character_age = 50 -/datum/job/rd/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/rd(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/research_director(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/science/rd + alt_titles = list("Research Supervisor") /datum/job/scientist title = "Scientist" @@ -57,23 +42,11 @@ economic_modifier = 7 access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_xenoarch) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenoarch) - alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher") minimal_player_age = 14 -/datum/job/scientist/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit) - return 1 + outfit_type = /decl/hierarchy/outfit/job/science/scientist + alt_titles = list("Xenoarcheologist", "Anomalist", "Phoron Researcher") /datum/job/xenobiologist title = "Xenobiologist" @@ -89,23 +62,11 @@ economic_modifier = 7 access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_hydroponics) minimal_access = list(access_research, access_xenobiology, access_hydroponics, access_tox_storage) - alt_titles = list("Xenobotanist") minimal_player_age = 14 -/datum/job/xenobiologist/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/scientist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/science(H), slot_belt) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/toxins(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/tox(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/tox(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat/science(H), slot_wear_suit) - return 1 + outfit_type = /decl/hierarchy/outfit/job/science/xenobiologist + alt_titles = list("Xenobotanist") /datum/job/roboticist title = "Roboticist" @@ -121,18 +82,7 @@ economic_modifier = 5 access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access. minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research) //As a job that handles so many corpses, it makes sense for them to have morgue access. - alt_titles = list("Biomechanical Engineer","Mechatronic Engineer") - minimal_player_age = 7 -/datum/job/roboticist/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sci(H), slot_l_ear) - if(H.backbag == 2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(H.backbag == 3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/roboticist(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/roboticist(H), slot_r_store) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/toggle/labcoat(H), slot_wear_suit) - return 1 + outfit_type = /decl/hierarchy/outfit/job/science/roboticist + alt_titles = list("Biomechanical Engineer","Mechatronic Engineer") \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index f7753efc87c..8cda80f9bcd 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -20,32 +20,11 @@ access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers, access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting, access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway, access_external_airlocks) - alt_titles = list("Commander", "Chief of Security") minimum_character_age = 25 minimal_player_age = 14 -/datum/job/hos/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hos(H), slot_l_ear) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/head_of_security(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/heads/hos(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) -// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_store) - else - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - H.implant_loyalty() - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/security/hos + alt_titles = list("Commander", "Chief of Security") /datum/job/warden title = "Warden" @@ -62,29 +41,7 @@ access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_morgue, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_armory, access_maint_tunnels, access_external_airlocks) minimal_player_age = 5 - -/datum/job/warden/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/warden(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/warden(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/sechud(H), slot_glasses) -// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) //Grab one from the armory you donk - H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/security/warden /datum/job/detective title = "Detective" @@ -97,39 +54,12 @@ supervisors = "the head of security" selection_color = "#601C1C" idtype = /obj/item/weapon/card/id/security - alt_titles = list("Forensic Technician","Investigator") access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_eva, access_external_airlocks) economic_modifier = 5 minimal_player_age = 3 - -/datum/job/detective/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(H), slot_l_store) - if(H.backbag == 1)//Why cant some of these things spawn in his office? - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack) - if(has_alt_title(H, alt_title,"Forensic Technician")) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/forensics/blue(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/crimekit, slot_r_hand) - else - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_trench(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/det(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase/crimekit(H), slot_r_hand) - return 1 - - + outfit_type = /decl/hierarchy/outfit/job/security/detective + alt_titles = list("Forensic Technician" = /decl/hierarchy/outfit/job/security/detective/forensic, "Investigator") /datum/job/officer title = "Security Officer" @@ -142,28 +72,9 @@ supervisors = "the head of security" selection_color = "#601C1C" idtype = /obj/item/weapon/card/id/security - alt_titles = list("Junior Officer") economic_modifier = 4 access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_morgue, access_external_airlocks) minimal_access = list(access_security, access_eva, access_sec_doors, access_brig, access_maint_tunnels, access_external_airlocks) minimal_player_age = 3 - -/datum/job/officer/equip(var/mob/living/carbon/human/H, var/alt_title) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel/sec(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - if(5) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/messenger/sec(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/flash(H), slot_l_store) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_l_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) - return 1 + outfit_type = /decl/hierarchy/outfit/job/security/officer + alt_titles = list("Junior Officer") \ No newline at end of file diff --git a/code/game/jobs/job/silicon.dm b/code/game/jobs/job/silicon.dm index d9aa96f7101..1b063894baf 100644 --- a/code/game/jobs/job/silicon.dm +++ b/code/game/jobs/job/silicon.dm @@ -11,17 +11,18 @@ minimal_player_age = 7 account_allowed = 0 economic_modifier = 0 - equip(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 - equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 - - equip_backpack(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 +/datum/job/ai/equip(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 +/* +/datum/job/ai/equip_survival(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 +*/ +/datum/job/ai/equip_backpack(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 /datum/job/ai/is_position_available() return (empty_playable_ai_cores.len != 0) @@ -45,18 +46,18 @@ account_allowed = 0 economic_modifier = 0 - equip(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 - - equip_survival(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 - - equip_backpack(var/mob/living/carbon/human/H) - if(!H) return 0 - return 1 - return 1 +/datum/job/cyborg/equip(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 +/* +/datum/job/cyborg/equip_survival(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 +*/ +/datum/job/cyborg/equip_backpack(var/mob/living/carbon/human/H) + if(!H) return 0 + return 1 + return 1 /datum/job/cyborg/equip_preview(mob/living/carbon/human/H) H.equip_to_slot_or_del(new /obj/item/clothing/suit/cardborg(H), slot_wear_suit) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 378526e727d..1ab4a3b71a6 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -372,10 +372,10 @@ var/global/datum/controller/occupations/job_master else spawn_in_storage += thing //Equip job items. - job.equip(H) + job.equip(H, H.mind ? H.mind.role_alt_title : "") job.setup_account(H) job.equip_backpack(H) - job.equip_survival(H) +// job.equip_survival(H) job.apply_fingerprints(H) H.equip_post_job() @@ -530,7 +530,7 @@ var/global/datum/controller/occupations/job_master H.equip_to_slot_or_del(C, slot_wear_id) - H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt) +// H.equip_to_slot_or_del(new /obj/item/device/pda(H), slot_belt) if(locate(/obj/item/device/pda,H)) var/obj/item/device/pda/pda = locate(/obj/item/device/pda,H) pda.owner = H.real_name diff --git a/code/game/objects/items/weapons/id cards/cards.dm b/code/game/objects/items/weapons/id cards/cards.dm new file mode 100644 index 00000000000..b5654dade7a --- /dev/null +++ b/code/game/objects/items/weapons/id cards/cards.dm @@ -0,0 +1,101 @@ +/* Cards + * Contains: + * DATA CARD + * ID CARD + * FINGERPRINT CARD HOLDER + * FINGERPRINT CARD + */ + + + +/* + * DATA CARDS - Used for the teleporter + */ +/obj/item/weapon/card + name = "card" + desc = "Does card things." + icon = 'icons/obj/card.dmi' + w_class = ITEMSIZE_TINY + slot_flags = SLOT_EARS + var/associated_account_number = 0 + + var/list/files = list( ) + +/obj/item/weapon/card/data + name = "data disk" + desc = "A disk of data." + icon_state = "data" + var/function = "storage" + var/data = "null" + var/special = null + item_state = "card-id" + +/obj/item/weapon/card/data/verb/label(t as text) + set name = "Label Disk" + set category = "Object" + set src in usr + + if (t) + src.name = text("data disk- '[]'", t) + else + src.name = "data disk" + src.add_fingerprint(usr) + return + +/obj/item/weapon/card/data/clown + name = "\proper the coordinates to clown planet" + icon_state = "data" + item_state = "card-id" + layer = 3 + level = 2 + desc = "This card contains coordinates to the fabled Clown Planet. Handle with care." + function = "teleporter" + data = "Clown Land" + +/* + * ID CARDS + */ + +/obj/item/weapon/card/emag_broken + desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage." + name = "broken cryptographic sequencer" + icon_state = "emag" + item_state = "card-id" + origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) + +/obj/item/weapon/card/emag + desc = "It's a card with a magnetic strip attached to some circuitry." + name = "cryptographic sequencer" + icon_state = "emag" + item_state = "card-id" + origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) + var/uses = 10 + +/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user) + var/used_uses = A.emag_act(uses, user, src) + if(used_uses < 0) + return ..(A, user) + + uses -= used_uses + A.add_fingerprint(user) + log_and_message_admins("emagged \an [A].") + + if(uses<1) + user.visible_message("\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.") + user.drop_item() + var/obj/item/weapon/card/emag_broken/junk = new(user.loc) + junk.add_fingerprint(user) + qdel(src) + + return 1 + +/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob) + if(istype(O, /obj/item/stack/telecrystal)) + var/obj/item/stack/telecrystal/T = O + if(T.amount < 1) + usr << "You are not adding enough telecrystals to fuel \the [src]." + return + uses += T.amount/2 //Gives 5 uses per 10 TC + uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice + usr << "You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses]." + qdel(O) \ No newline at end of file diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm similarity index 52% rename from code/game/objects/items/weapons/cards_ids.dm rename to code/game/objects/items/weapons/id cards/station_ids.dm index 3f005430081..68d969a6b5d 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -1,365 +1,465 @@ -/* Cards - * Contains: - * DATA CARD - * ID CARD - * FINGERPRINT CARD HOLDER - * FINGERPRINT CARD - */ - - - -/* - * DATA CARDS - Used for the teleporter - */ -/obj/item/weapon/card - name = "card" - desc = "Does card things." - icon = 'icons/obj/card.dmi' - w_class = ITEMSIZE_TINY - slot_flags = SLOT_EARS - var/associated_account_number = 0 - - var/list/files = list( ) - -/obj/item/weapon/card/data - name = "data disk" - desc = "A disk of data." - icon_state = "data" - var/function = "storage" - var/data = "null" - var/special = null - item_state = "card-id" - -/obj/item/weapon/card/data/verb/label(t as text) - set name = "Label Disk" - set category = "Object" - set src in usr - - if (t) - src.name = text("data disk- '[]'", t) - else - src.name = "data disk" - src.add_fingerprint(usr) - return - -/obj/item/weapon/card/data/clown - name = "\proper the coordinates to clown planet" - icon_state = "data" - item_state = "card-id" - layer = 3 - level = 2 - desc = "This card contains coordinates to the fabled Clown Planet. Handle with care." - function = "teleporter" - data = "Clown Land" - -/* - * ID CARDS - */ - -/obj/item/weapon/card/emag_broken - desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage." - name = "broken cryptographic sequencer" - icon_state = "emag" - item_state = "card-id" - origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) - -/obj/item/weapon/card/emag - desc = "It's a card with a magnetic strip attached to some circuitry." - name = "cryptographic sequencer" - icon_state = "emag" - item_state = "card-id" - origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) - var/uses = 10 - -/obj/item/weapon/card/emag/resolve_attackby(atom/A, mob/user) - var/used_uses = A.emag_act(uses, user, src) - if(used_uses < 0) - return ..(A, user) - - uses -= used_uses - A.add_fingerprint(user) - log_and_message_admins("emagged \an [A].") - - if(uses<1) - user.visible_message("\The [src] fizzles and sparks - it seems it's been used once too often, and is now spent.") - user.drop_item() - var/obj/item/weapon/card/emag_broken/junk = new(user.loc) - junk.add_fingerprint(user) - qdel(src) - - return 1 - -/obj/item/weapon/card/emag/attackby(obj/item/O as obj, mob/user as mob) - if(istype(O, /obj/item/stack/telecrystal)) - var/obj/item/stack/telecrystal/T = O - if(T.amount < 1) - usr << "You are not adding enough telecrystals to fuel \the [src]." - return - uses += T.amount/2 //Gives 5 uses per 10 TC - uses = ceil(uses) //Ensures no decimal uses nonsense, rounds up to be nice - usr << "You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses]." - qdel(O) - - -/obj/item/weapon/card/id - name = "identification card" - desc = "A card used to provide ID and determine access across the station." - icon_state = "id" - item_state = "card-id" - - sprite_sheets = list( - "Teshari" = 'icons/mob/species/seromi/id.dmi' - ) - - var/access = list() - var/registered_name = "Unknown" // The name registered_name on the card - slot_flags = SLOT_ID | SLOT_EARS - - var/age = "\[UNSET\]" - var/blood_type = "\[UNSET\]" - var/dna_hash = "\[UNSET\]" - var/fingerprint_hash = "\[UNSET\]" - var/sex = "\[UNSET\]" - var/icon/front - var/icon/side - - var/primary_color = rgb(0,0,0) // Obtained by eyedroppering the stripe in the middle of the card - var/secondary_color = rgb(0,0,0) // Likewise for the oval in the top-left corner - - //alt titles are handled a bit weirdly in order to unobtrusively integrate into existing ID system - var/assignment = null //can be alt title or the actual job - var/rank = null //actual job - var/dorm = 0 // determines if this ID has claimed a dorm already - -/obj/item/weapon/card/id/examine(mob/user) - set src in oview(1) - if(in_range(usr, src)) - show(usr) - usr << desc - else - usr << "It is too far away." - -/obj/item/weapon/card/id/proc/prevent_tracking() - return 0 - -/obj/item/weapon/card/id/proc/show(mob/user as mob) - if(front && side) - user << browse_rsc(front, "front.png") - user << browse_rsc(side, "side.png") - var/datum/browser/popup = new(user, "idcard", name, 600, 250) - popup.set_content(dat()) - popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) - popup.open() - return - -/obj/item/weapon/card/id/proc/update_name() - name = "[src.registered_name]'s ID Card ([src.assignment])" - -/obj/item/weapon/card/id/proc/set_id_photo(var/mob/M) - front = getFlatIcon(M, SOUTH, always_use_defdir = 1) - side = getFlatIcon(M, WEST, always_use_defdir = 1) - -/mob/proc/set_id_info(var/obj/item/weapon/card/id/id_card) - id_card.age = 0 - id_card.registered_name = real_name - id_card.sex = capitalize(gender) - id_card.set_id_photo(src) - - if(dna) - id_card.blood_type = dna.b_type - id_card.dna_hash = dna.unique_enzymes - id_card.fingerprint_hash= md5(dna.uni_identity) - id_card.update_name() - -/mob/living/carbon/human/set_id_info(var/obj/item/weapon/card/id/id_card) - ..() - id_card.age = age - -/obj/item/weapon/card/id/proc/dat() - var/dat = ("" - dat += "
") - dat += text("Name: []
", registered_name) - dat += text("Sex: []
\n", sex) - dat += text("Age: []
\n", age) - dat += text("Rank: []
\n", assignment) - dat += text("Fingerprint: []
\n", fingerprint_hash) - dat += text("Blood Type: []
\n", blood_type) - dat += text("DNA Hash: []

\n", dna_hash) - if(front && side) - dat +="
Photo:
" - return dat - -/obj/item/weapon/card/id/attack_self(mob/user as mob) - user.visible_message("\The [user] shows you: \icon[src] [src.name]. The assignment on the card: [src.assignment]",\ - "You flash your ID card: \icon[src] [src.name]. The assignment on the card: [src.assignment]") - - src.add_fingerprint(user) - return - -/obj/item/weapon/card/id/GetAccess() - return access - -/obj/item/weapon/card/id/GetID() - return src - -/obj/item/weapon/card/id/verb/read() - set name = "Read ID Card" - set category = "Object" - set src in usr - - usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment) - usr << "The blood type on the card is [blood_type]." - usr << "The DNA hash on the card is [dna_hash]." - usr << "The fingerprint hash on the card is [fingerprint_hash]." - return - -/obj/item/weapon/card/id/silver - name = "identification card" - desc = "A silver card which shows honour and dedication." - icon_state = "silver" - item_state = "silver_id" - -/obj/item/weapon/card/id/gold - name = "identification card" - desc = "A golden card which shows power and might." - icon_state = "gold" - item_state = "gold_id" - -/obj/item/weapon/card/id/syndicate_command - name = "syndicate ID card" - desc = "An ID straight from the Syndicate." - registered_name = "Syndicate" - assignment = "Syndicate Overlord" - access = list(access_syndicate, access_external_airlocks) - -/obj/item/weapon/card/id/captains_spare - name = "colony director's spare ID" - desc = "The spare ID of the High Lord himself." - icon_state = "gold" - item_state = "gold_id" - registered_name = "Colony Director" - assignment = "Colony Director" -/obj/item/weapon/card/id/captains_spare/New() - access = get_all_station_access() - ..() - -/obj/item/weapon/card/id/synthetic - name = "\improper Synthetic ID" - desc = "Access module for NanoTrasen Synthetics" - icon_state = "id-robot" - item_state = "tdgreen" - assignment = "Synthetic" - -/obj/item/weapon/card/id/synthetic/New() - access = get_all_station_access() + access_synth - ..() - -/obj/item/weapon/card/id/centcom - name = "\improper CentCom. ID" - desc = "An ID straight from Central Command." - icon_state = "centcom" - registered_name = "Central Command" - assignment = "General" - New() - access = get_all_centcom_access() - ..() - -/obj/item/weapon/card/id/centcom/ERT - name = "\improper Emergency Response Team ID" - assignment = "Emergency Response Team" - -/obj/item/weapon/card/id/centcom/ERT/New() - ..() - access |= get_all_station_access() - -// Department-flavor IDs -/obj/item/weapon/card/id/medical - name = "identification card" - desc = "A card issued to station medical staff." - icon_state = "med" - primary_color = rgb(189,237,237) - secondary_color = rgb(223,255,255) - -/obj/item/weapon/card/id/medical/head - name = "identification card" - desc = "A card which represents care and compassion." - icon_state = "medGold" - primary_color = rgb(189,237,237) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/security - name = "identification card" - desc = "A card issued to station security staff." - icon_state = "sec" - primary_color = rgb(189,47,0) - secondary_color = rgb(223,127,95) - -/obj/item/weapon/card/id/security/head - name = "identification card" - desc = "A card which represents honor and protection." - icon_state = "secGold" - primary_color = rgb(189,47,0) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/engineering - name = "identification card" - desc = "A card issued to station engineering staff." - icon_state = "eng" - primary_color = rgb(189,94,0) - secondary_color = rgb(223,159,95) - -/obj/item/weapon/card/id/engineering/head - name = "identification card" - desc = "A card which represents creativity and ingenuity." - icon_state = "engGold" - primary_color = rgb(189,94,0) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/science - name = "identification card" - desc = "A card issued to station science staff." - icon_state = "sci" - primary_color = rgb(142,47,142) - secondary_color = rgb(191,127,191) - -/obj/item/weapon/card/id/science/head - name = "identification card" - desc = "A card which represents knowledge and reasoning." - icon_state = "sciGold" - primary_color = rgb(142,47,142) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/cargo - name = "identification card" - desc = "A card issued to station cargo staff." - icon_state = "cargo" - primary_color = rgb(142,94,0) - secondary_color = rgb(191,159,95) - -/obj/item/weapon/card/id/cargo/head - name = "identification card" - desc = "A card which represents service and planning." - icon_state = "cargoGold" - primary_color = rgb(142,94,0) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/civilian - name = "identification card" - desc = "A card issued to station civilian staff." - icon_state = "civ" - primary_color = rgb(0,94,142) - secondary_color = rgb(95,159,191) - -/obj/item/weapon/card/id/civilian/head //This is not the HoP. There's no position that uses this right now. - name = "identification card" - desc = "A card which represents common sense and responsibility." - icon_state = "civGold" - primary_color = rgb(0,94,142) - secondary_color = rgb(255,223,127) - -/obj/item/weapon/card/id/external - name = "identification card" - desc = "An identification card of some sort. It does not look like it is issued by NT." - icon_state = "permit" - primary_color = rgb(142,94,0) +/obj/item/weapon/card/id + name = "identification card" + desc = "A card used to provide ID and determine access across the station." + icon_state = "id" + item_state = "card-id" + + sprite_sheets = list( + "Teshari" = 'icons/mob/species/seromi/id.dmi' + ) + + var/access = list() + var/registered_name = "Unknown" // The name registered_name on the card + slot_flags = SLOT_ID | SLOT_EARS + + var/age = "\[UNSET\]" + var/blood_type = "\[UNSET\]" + var/dna_hash = "\[UNSET\]" + var/fingerprint_hash = "\[UNSET\]" + var/sex = "\[UNSET\]" + var/icon/front + var/icon/side + + var/primary_color = rgb(0,0,0) // Obtained by eyedroppering the stripe in the middle of the card + var/secondary_color = rgb(0,0,0) // Likewise for the oval in the top-left corner + + //alt titles are handled a bit weirdly in order to unobtrusively integrate into existing ID system + var/assignment = null //can be alt title or the actual job + var/rank = null //actual job + var/dorm = 0 // determines if this ID has claimed a dorm already + +/obj/item/weapon/card/id/examine(mob/user) + set src in oview(1) + if(in_range(usr, src)) + show(usr) + usr << desc + else + usr << "It is too far away." + +/obj/item/weapon/card/id/proc/prevent_tracking() + return 0 + +/obj/item/weapon/card/id/proc/show(mob/user as mob) + if(front && side) + user << browse_rsc(front, "front.png") + user << browse_rsc(side, "side.png") + var/datum/browser/popup = new(user, "idcard", name, 600, 250) + popup.set_content(dat()) + popup.set_title_image(usr.browse_rsc_icon(src.icon, src.icon_state)) + popup.open() + return + +/obj/item/weapon/card/id/proc/update_name() + name = "[src.registered_name]'s ID Card ([src.assignment])" + +/obj/item/weapon/card/id/proc/set_id_photo(var/mob/M) + front = getFlatIcon(M, SOUTH, always_use_defdir = 1) + side = getFlatIcon(M, WEST, always_use_defdir = 1) + +/mob/proc/set_id_info(var/obj/item/weapon/card/id/id_card) + id_card.age = 0 + id_card.registered_name = real_name + id_card.sex = capitalize(gender) + id_card.set_id_photo(src) + + if(dna) + id_card.blood_type = dna.b_type + id_card.dna_hash = dna.unique_enzymes + id_card.fingerprint_hash= md5(dna.uni_identity) + id_card.update_name() + +/mob/living/carbon/human/set_id_info(var/obj/item/weapon/card/id/id_card) + ..() + id_card.age = age + +/obj/item/weapon/card/id/proc/dat() + var/dat = ("" + dat += "
") + dat += text("Name: []
", registered_name) + dat += text("Sex: []
\n", sex) + dat += text("Age: []
\n", age) + dat += text("Rank: []
\n", assignment) + dat += text("Fingerprint: []
\n", fingerprint_hash) + dat += text("Blood Type: []
\n", blood_type) + dat += text("DNA Hash: []

\n", dna_hash) + if(front && side) + dat +="
Photo:
" + return dat + +/obj/item/weapon/card/id/attack_self(mob/user as mob) + user.visible_message("\The [user] shows you: \icon[src] [src.name]. The assignment on the card: [src.assignment]",\ + "You flash your ID card: \icon[src] [src.name]. The assignment on the card: [src.assignment]") + + src.add_fingerprint(user) + return + +/obj/item/weapon/card/id/GetAccess() + return access + +/obj/item/weapon/card/id/GetID() + return src + +/obj/item/weapon/card/id/verb/read() + set name = "Read ID Card" + set category = "Object" + set src in usr + + usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment) + usr << "The blood type on the card is [blood_type]." + usr << "The DNA hash on the card is [dna_hash]." + usr << "The fingerprint hash on the card is [fingerprint_hash]." + return + +/obj/item/weapon/card/id/silver + name = "identification card" + desc = "A silver card which shows honour and dedication." + icon_state = "silver" + item_state = "silver_id" + +/obj/item/weapon/card/id/silver/secretary/New() + ..() + assignment = "Command Secretary" + rank = "Command Secretary" + access |= list(access_heads) + +/obj/item/weapon/card/id/silver/hop/New() + ..() + assignment = "Head of Personnel" + rank = "Head of Personnel" + access |= list(access_security, access_sec_doors, access_brig, access_forensics_lockers, + access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, + access_all_personal_lockers, access_maint_tunnels, access_bar, access_janitor, access_construction, access_morgue, + access_crematorium, access_kitchen, access_cargo, access_cargo_bot, access_mailsorting, access_qm, access_hydroponics, access_lawyer, + access_chapel_office, access_library, access_research, access_mining, access_heads_vault, access_mining_station, + access_hop, access_RC_announce, access_keycard_auth, access_gateway) + +/obj/item/weapon/card/id/gold + name = "identification card" + desc = "A golden card which shows power and might." + icon_state = "gold" + item_state = "gold_id" + +/obj/item/weapon/card/id/gold/captain/New() + assignment = "Colony Director" + rank = "Colony Director" + access = get_all_station_access() + ..() + +/obj/item/weapon/card/id/captains_spare + name = "colony director's spare ID" + desc = "The spare ID of the High Lord himself." + icon_state = "gold" + item_state = "gold_id" + registered_name = "Colony Director" + assignment = "Colony Director" + +/obj/item/weapon/card/id/captains_spare/New() + access = get_all_station_access() + ..() + +/obj/item/weapon/card/id/synthetic + name = "\improper Synthetic ID" + desc = "Access module for NanoTrasen Synthetics" + icon_state = "id-robot" + item_state = "tdgreen" + assignment = "Synthetic" + +/obj/item/weapon/card/id/synthetic/New() + access = get_all_station_access() + access_synth + ..() + +/obj/item/weapon/card/id/centcom + name = "\improper CentCom. ID" + desc = "An ID straight from Central Command." + icon_state = "centcom" + registered_name = "Central Command" + assignment = "General" + +/obj/item/weapon/card/id/centcom/New() + access = get_all_centcom_access() + ..() + +/obj/item/weapon/card/id/centcom/station/New() + ..() + access |= get_all_station_access() + +/obj/item/weapon/card/id/centcom/ERT + name = "\improper Emergency Response Team ID" + assignment = "Emergency Response Team" + +/obj/item/weapon/card/id/centcom/ERT/New() + ..() + access |= get_all_station_access() + +// Department-flavor IDs +/obj/item/weapon/card/id/medical + name = "identification card" + desc = "A card issued to station medical staff." + icon_state = "med" + primary_color = rgb(189,237,237) + secondary_color = rgb(223,255,255) + access = list(access_medical, access_medical_equip) + +/obj/item/weapon/card/id/medical/doctor/New() + ..() + assignment = "Medical Doctor" + rank = "Medical Doctor" + access |= list(access_morgue, access_surgery, access_virology, access_eva) + +/obj/item/weapon/card/id/medical/chemist/New() + ..() + assignment = "Chemist" + rank = "Chemist" + access |= list(access_chemistry) + +/obj/item/weapon/card/id/medical/geneticist/New() + ..() + assignment = "Geneticist" + rank = "Geneticist" + access |= list(access_morgue, access_genetics) + +/obj/item/weapon/card/id/medical/psychiatrist/New() + ..() + assignment = "Psychiatrist" + rank = "Psychiatrist" + access |= list(access_psychiatrist) + +/obj/item/weapon/card/id/medical/paramedic/New() + ..() + assignment = "Paramedic" + rank = "Paramedic" + access |= list(access_morgue, access_eva, access_maint_tunnels, access_external_airlocks) + +/obj/item/weapon/card/id/medical/head + name = "identification card" + desc = "A card which represents care and compassion." + assignment = "Chief Medical Officer" + rank = "Chief Medical Officer" + icon_state = "medGold" + primary_color = rgb(189,237,237) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/medical/head/New() + access |= list(access_morgue, access_genetics, access_heads, access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, + access_keycard_auth, access_sec_doors, access_psychiatrist, access_eva, access_external_airlocks, access_maint_tunnels) + +/obj/item/weapon/card/id/security + name = "identification card" + desc = "A card issued to station security staff." + icon_state = "sec" + primary_color = rgb(189,47,0) + secondary_color = rgb(223,127,95) + access = list(access_security, access_sec_doors, access_maint_tunnels, access_external_airlocks, access_eva) + +/obj/item/weapon/card/id/security/officer/New() + ..() + assignment = "Assignment" + rank = "Security Officer" + access |= list(access_brig) + +/obj/item/weapon/card/id/security/detective/New() + ..() + assignment = "Detective" + rank = "Detective" + access |= list(access_forensics_lockers, access_morgue) + +/obj/item/weapon/card/id/security/warden/New() + ..() + assignment = "Warden" + rank = "Warden" + access |= list(access_brig, access_armory) + +/obj/item/weapon/card/id/security/head + name = "identification card" + desc = "A card which represents honor and protection." + icon_state = "secGold" + assignment = "Head of Security" + rank = "Head of Security" + primary_color = rgb(189,47,0) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/security/head/New() + ..() + access |= list(access_brig, access_armory, access_forensics_lockers, access_morgue, access_all_personal_lockers, + access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting, + access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway) + +/obj/item/weapon/card/id/engineering + name = "identification card" + desc = "A card issued to station engineering staff." + icon_state = "eng" + primary_color = rgb(189,94,0) + secondary_color = rgb(223,159,95) + access = list(access_eva, access_engine, access_maint_tunnels, access_construction, access_external_airlocks) + +/obj/item/weapon/card/id/engineering/engineer/New() + ..() + assignment = "Station Engineer" + rank = "Station Engineer" + access |= list(access_engine_equip, access_tech_storage) + +/obj/item/weapon/card/id/engineering/atmos/New() + ..() + assignment = "Atmospheric Technician" + rank = "Atmospheric Technician" + access |= list(access_atmospherics, access_emergency_storage) + +/obj/item/weapon/card/id/engineering/head + name = "identification card" + desc = "A card which represents creativity and ingenuity." + icon_state = "engGold" + assignment = "Chief Engineer" + rank = "Chief Engineer" + primary_color = rgb(189,94,0) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/engineering/head/New() + ..() + access |= list(access_engine_equip, access_tech_storage, access_teleporter, access_atmospherics, access_emergency_storage, + access_heads, access_sec_doors, access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_ai_upload) + +/obj/item/weapon/card/id/science + name = "identification card" + desc = "A card issued to station science staff." + icon_state = "sci" + primary_color = rgb(142,47,142) + secondary_color = rgb(191,127,191) + access = list(access_research) + +/obj/item/weapon/card/id/science/scientist/New() + ..() + assignment = "Scientist" + rank = "Scientist" + access |= list(access_tox, access_tox_storage, access_xenoarch) + +/obj/item/weapon/card/id/science/xenobiologist/New() + ..() + assignment = "Xenobiologist" + rank = "Xenobiologist" + access |= list(access_xenobiology, access_hydroponics, access_tox_storage) + +/obj/item/weapon/card/id/science/roboticist/New() + ..() + assignment = "Roboticist" + rank = "Roboticist" + access |= list(access_robotics, access_tech_storage, access_morgue) + +/obj/item/weapon/card/id/science/head + name = "identification card" + desc = "A card which represents knowledge and reasoning." + icon_state = "sciGold" + assignment = "Research Director" + rank = "Research Director" + primary_color = rgb(142,47,142) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/science/head/New() + ..() + access |= list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, + access_robotics, access_xenobiology, access_ai_upload, access_tech_storage, access_RC_announce, access_keycard_auth, + access_tcomsat, access_gateway, access_xenoarch) + +/obj/item/weapon/card/id/cargo + name = "identification card" + desc = "A card issued to station cargo staff." + icon_state = "cargo" + primary_color = rgb(142,94,0) + secondary_color = rgb(191,159,95) + access = list(access_mailsorting) + +/obj/item/weapon/card/id/cargo/cargo_tech/New() + ..() + assignment = "Cargo Technician" + rank = "Cargo Technician" + access |= list(access_maint_tunnels, access_cargo, access_cargo_bot) + +/obj/item/weapon/card/id/cargo/mining/New() + ..() + assignment = "Shaft Miner" + rank = "Shaft Miner" + access |= list(access_mining, access_mining_station) + +/obj/item/weapon/card/id/cargo/head + name = "identification card" + desc = "A card which represents service and planning." + icon_state = "cargoGold" + assignment = "Quartermaster" + rank = "Quartermaster" + primary_color = rgb(142,94,0) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/cargo/head/New() + ..() + access |= list(access_maint_tunnels, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station) + +/obj/item/weapon/card/id/assistant + name = "identification card" +// assignment = "Assistant" +// rank = "Assistant" + access = list() + +/obj/item/weapon/card/id/civilian + name = "identification card" + desc = "A card issued to station civilian staff." + icon_state = "civ" + assignment = "Civilian" + rank = "Assistant" + primary_color = rgb(0,94,142) + secondary_color = rgb(95,159,191) + access = list() + +/obj/item/weapon/card/id/civilian/bartender/New() + ..() + assignment = "Bartender" + rank = "Bartender" + access |= list(access_bar) + +/obj/item/weapon/card/id/civilian/botanist/New() + ..() + assignment = "Gardener" + rank = "Gardener" + access |= list(access_hydroponics) + +/obj/item/weapon/card/id/civilian/chaplain/New() + ..() + assignment = "Chaplain" + rank = "Chaplain" + access |= list(access_chapel_office, access_crematorium) + +/obj/item/weapon/card/id/civilian/chef/New() + ..() + assignment = "Chef" + rank = "Chef" + access |= list(access_kitchen) + +/obj/item/weapon/card/id/civilian/internal_affairs_agent/New() + ..() + assignment = "Internal Affairs Agent" + rank = "Internal Affairs Agent" + access |= list(access_lawyer, access_sec_doors, access_heads) + +/obj/item/weapon/card/id/civilian/janitor/New() + ..() + assignment = "Janitor" + rank = "Janitor" + access |= list(access_janitor, access_maint_tunnels) + +/obj/item/weapon/card/id/civilian/librarian/New() + ..() + assignment = "Librarian" + rank = "Librarian" + access |= list(access_library) + +/obj/item/weapon/card/id/civilian/head //This is not the HoP. There's no position that uses this right now. + name = "identification card" + desc = "A card which represents common sense and responsibility." + icon_state = "civGold" + primary_color = rgb(0,94,142) + secondary_color = rgb(255,223,127) + +/obj/item/weapon/card/id/external + name = "identification card" + desc = "An identification card of some sort. It does not look like it is issued by NT." + icon_state = "permit" + primary_color = rgb(142,94,0) secondary_color = rgb(191,159,95) \ No newline at end of file diff --git a/code/game/objects/items/weapons/cards_ids_syndicate.dm b/code/game/objects/items/weapons/id cards/syndicate_ids.dm similarity index 94% rename from code/game/objects/items/weapons/cards_ids_syndicate.dm rename to code/game/objects/items/weapons/id cards/syndicate_ids.dm index b5c874868e7..ce9e1c83a32 100644 --- a/code/game/objects/items/weapons/cards_ids_syndicate.dm +++ b/code/game/objects/items/weapons/id cards/syndicate_ids.dm @@ -27,12 +27,12 @@ var/obj/item/weapon/card/id/I = O src.access |= I.access if(player_is_antag(user.mind)) - user << "The microscanner activates as you pass it over the ID, copying its access." + to_chat(user, "The microscanner activates as you pass it over the ID, copying its access.") /obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob) // We use the fact that registered_name is not unset should the owner be vaporized, to ensure the id doesn't magically become unlocked. if(!registered_user && register_user(user)) - user << "The microscanner marks you as its owner, preventing others from accessing its internals." + to_chat(user, "The microscanner marks you as its owner, preventing others from accessing its internals.") if(registered_user == user) switch(alert("Would you like edit the ID, or show it?","Show or Edit?", "Edit","Show")) if("Edit") @@ -209,3 +209,10 @@ /datum/card_state/dd_SortValue() return name + +/obj/item/weapon/card/id/syndicate_command + name = "syndicate ID card" + desc = "An ID straight from the Syndicate." + registered_name = "Syndicate" + assignment = "Syndicate Overlord" + access = list(access_syndicate, access_external_airlocks) \ No newline at end of file diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index bb2768d69d7..761193eb336 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -112,7 +112,7 @@ var/list/admin_verbs_sounds = list( ) var/list/admin_verbs_fun = list( /client/proc/object_talk, - /client/proc/cmd_admin_dress, + /datum/admins/proc/cmd_admin_dress, /client/proc/cmd_admin_gib_self, /client/proc/drop_bomb, /client/proc/everyone_random, @@ -255,7 +255,7 @@ var/list/admin_verbs_hideable = list( /client/proc/play_sound, /client/proc/play_server_sound, /client/proc/object_talk, - /client/proc/cmd_admin_dress, + /datum/admins/proc/cmd_admin_dress, /client/proc/cmd_admin_gib_self, /client/proc/drop_bomb, /client/proc/cinematic, diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 968e7459e56..bf2c579afbe 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -385,410 +385,32 @@ for(var/areatype in areas_without_camera) world << "* [areatype]" -/client/proc/cmd_admin_dress() +/datum/admins/proc/cmd_admin_dress() set category = "Fun" set name = "Select equipment" - var/mob/living/carbon/human/M = input("Select mob.", "Select equipment.") as null|anything in human_mob_list - if(!M) return - - //log_admin("[key_name(src)] has alienized [M.key].") - var/list/dresspacks = list( - "strip", - "job", - "standard space gear", - "tournament standard red", - "tournament standard green", - "tournament gangster", - "tournament chef", - "tournament janitor", - "pirate", - "space pirate", - "soviet admiral", - "tunnel clown", - "masked killer", - "assassin", - "death commando", - "syndicate commando", - "special ops officer", - "blue wizard", - "red wizard", - "marisa wizard", - "emergency response team", - "nanotrasen representative", - "nanotrasen officer", - "nanotrasen captain" - ) - var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks - if (isnull(dresscode)) + if(!check_rights(R_FUN)) return - feedback_add_details("admin_verb","SEQ") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - for (var/obj/item/I in M) - if (istype(I, /obj/item/weapon/implant)) - continue - M.drop_from_inventory(I) - if(I.loc != M) - qdel(I) - switch(dresscode) - if ("strip") - //do nothing - if ("job") - var/selected_job = input("Select job", "Robust quick dress shop") as null|anything in joblist - if (isnull(selected_job)) - return - var/datum/job/job = job_master.GetJob(selected_job) - if(!job) - return + var/mob/living/carbon/human/H = input("Select mob.", "Select equipment.") as null|anything in human_mob_list + if(!H) + return - job.equip(M) - job.apply_fingerprints(M) - job_master.spawnId(M, selected_job) + var/decl/hierarchy/outfit/outfit = input("Select outfit.", "Select equipment.") as null|anything in outfits() + if(!outfit) + return - if ("standard space gear") - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) + feedback_add_details("admin_verb","SEQ") + dressup_human(H, outfit, TRUE) - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space(M), slot_head) - var /obj/item/weapon/tank/jetpack/J = new /obj/item/weapon/tank/jetpack/oxygen(M) - M.equip_to_slot_or_del(J, slot_back) - J.toggle() - M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M), slot_wear_mask) - J.Topic(null, list("stat" = 1)) - if ("tournament standard red","tournament standard green") //we think stunning weapon is too overpowered to use it on tournaments. --rastaf0 - if (dresscode=="tournament standard red") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) - else - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/green(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/thunderdome(M), slot_head) - - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/destroyer(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/smokebomb(M), slot_r_store) - - - if ("tournament gangster") //gangster are supposed to fight each other. --rastaf0 - M.equip_to_slot_or_del(new /obj/item/clothing/under/det(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - - M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_trench(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head) - - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/ammo_magazine/s357(M), slot_l_store) - - if ("tournament chef") //Steven Seagal FTW - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/chef(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(M), slot_head) - - M.equip_to_slot_or_del(new /obj/item/weapon/material/kitchen/rollingpin(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_s_store) - - if ("tournament janitor") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - var/obj/item/weapon/storage/backpack/backpack = new(M) - for(var/obj/item/I in backpack) - qdel(I) - M.equip_to_slot_or_del(backpack, slot_back) - - M.equip_to_slot_or_del(new /obj/item/weapon/mop(M), slot_r_hand) - var/obj/item/weapon/reagent_containers/glass/bucket/bucket = new(M) - bucket.reagents.add_reagent("water", 70) - M.equip_to_slot_or_del(bucket, slot_l_hand) - - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/grenade/chem_grenade/cleaner(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/floor(M), slot_in_backpack) - - if ("pirate") - M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/bandana(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) - - if ("space pirate") - M.equip_to_slot_or_del(new /obj/item/clothing/under/pirate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/pirate(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/pirate(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/pirate(M), slot_r_hand) - - if ("soviet soldier") - M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/head/ushanka(M), slot_head) - - if("tunnel clown")//Tunnel clowns rule! - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/hooded/chaplain_hoodie(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(M), slot_r_store) - - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.access = get_all_station_access() - W.assignment = "Tunnel Clown!" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - var/obj/item/weapon/material/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_del(fire_axe, slot_r_hand) - - if("masked killer") - M.equip_to_slot_or_del(new /obj/item/clothing/under/overalls(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/sterile/latex(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/surgical(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/welding(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/apron(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/material/knife(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/surgical/scalpel(M), slot_r_store) - - var/obj/item/weapon/material/twohanded/fireaxe/fire_axe = new(M) - M.equip_to_slot_or_del(fire_axe, slot_r_hand) - - for(var/obj/item/carried_item in M.contents) - if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant. - carried_item.add_blood(M)//Oh yes, there will be blood... - - if("assassin") - M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/accessory/wcoat(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword(M), slot_l_store) - - var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = new(M) - for(var/obj/item/briefcase_item in sec_briefcase) - qdel(briefcase_item) - for(var/i=3, i>0, i--) - sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000 - sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow - sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_magazine/s357 - sec_briefcase.contents += new /obj/item/weapon/plastique - M.equip_to_slot_or_del(sec_briefcase, slot_l_hand) - - var/obj/item/device/pda/heads/pda = new(M) - pda.owner = M.real_name - pda.ownjob = "Reaper" - pda.name = "PDA-[M.real_name] ([pda.ownjob])" - - M.equip_to_slot_or_del(pda, slot_belt) - - var/obj/item/weapon/card/id/syndicate/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.access = get_all_station_access() - W.assignment = "Reaper" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - if("death commando")//Was looking to add this for a while. - deathsquad.equip(M) - - if("syndicate commando") - commandos.equip(M) - - if("nanotrasen representative") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/hop(M), slot_l_ear) - - var/obj/item/device/pda/heads/pda = new(M) - pda.owner = M.real_name - pda.ownjob = "NanoTrasen Navy Representative" - pda.name = "PDA-[M.real_name] ([pda.ownjob])" - - M.equip_to_slot_or_del(pda, slot_r_store) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_belt) - - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.icon_state = "centcom" - W.item_state = "id_inv" - W.access = get_all_station_access() - W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer") - W.assignment = "NanoTrasen Navy Representative" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - if("nanotrasen officer") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/officer(M), slot_head) - - var/obj/item/device/pda/heads/pda = new(M) - pda.owner = M.real_name - pda.ownjob = "NanoTrasen Navy Officer" - pda.name = "PDA-[M.real_name] ([pda.ownjob])" - - M.equip_to_slot_or_del(pda, slot_r_store) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy(M), slot_belt) - - var/obj/item/weapon/card/id/centcom/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.access = get_all_station_access() - W.access += get_all_centcom_access() - W.assignment = "NanoTrasen Navy Officer" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - - if("nanotrasen captain") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_captain(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/white(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/head/beret/centcom/captain(M), slot_head) - - var/obj/item/device/pda/heads/pda = new(M) - pda.owner = M.real_name - pda.ownjob = "NanoTrasen Navy Captain" - pda.name = "PDA-[M.real_name] ([pda.ownjob])" - - M.equip_to_slot_or_del(pda, slot_r_store) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy(M), slot_belt) - - var/obj/item/weapon/card/id/centcom/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.access = get_all_station_access() - W.access += get_all_centcom_access() - W.assignment = "NanoTrasen Navy Captain" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - if("emergency response team") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_officer(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/swat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/swat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/ert(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.icon_state = "centcom" - W.access = get_all_station_access() - W.access += get_all_centcom_access() - W.assignment = "Emergency Response Team" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - if("special ops officer") - M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate/combat(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/swat/officer(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/smokable/cigarette/cigar/havana(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad/beret(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse_rifle/M1911(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/flame/lighter/zippo(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.icon_state = "centcom" - W.access = get_all_station_access() - W.access += get_all_centcom_access() - W.assignment = "Special Operations Officer" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - if("blue wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) - - if("red wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/red(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/red(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) - - if("marisa wizard") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/lightpurple(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/marisa(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/marisa(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/marisa(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/teleportation_scroll(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/spellbook(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/staff(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) - if("soviet admiral") - M.equip_to_slot_or_del(new /obj/item/clothing/head/hgpiratecap(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/combat(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/combat(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(M), slot_l_ear) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/plain/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/hgpirate(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver/mateba(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/clothing/under/soviet(M), slot_w_uniform) - var/obj/item/weapon/card/id/W = new(M) - W.name = "[M.real_name]'s ID Card" - W.icon_state = "centcom" - W.access = get_all_station_access() - W.access += get_all_centcom_access() - W.assignment = "Admiral" - W.registered_name = M.real_name - M.equip_to_slot_or_del(W, slot_wear_id) - - M.regenerate_icons() - - log_admin("[key_name(usr)] changed the equipment of [key_name(M)] to [dresscode].") - message_admins("[key_name_admin(usr)] changed the equipment of [key_name_admin(M)] to [dresscode]..", 1) - return +/proc/dressup_human(var/mob/living/carbon/human/H, var/decl/hierarchy/outfit/outfit, var/undress = TRUE) + world << "dressup_human" + if(!H || !outfit) + return + if(undress) + H.delete_inventory() + outfit.equip(H) + log_and_message_admins("changed the equipment of [key_name(H)] to [outfit.name].") /client/proc/startSinglo() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d0883ff6120..9a4d8774fea 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1517,7 +1517,7 @@ return species.fire_icon_state // Called by job_controller. Makes drones start with a permit, might be useful for other people later too. -/mob/living/carbon/human/equip_post_job() +/mob/living/carbon/human/equip_post_job() //Drone Permit moved to equip_survival_gear() var/braintype = get_FBP_type() if(braintype == FBP_DRONE) var/turf/T = get_turf(src) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 54eee1b6aee..00b2185ee95 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -226,6 +226,7 @@ var/boxtype = /obj/item/weapon/storage/box/survival //Default survival box if(H.isSynthetic()) boxtype = /obj/item/weapon/storage/box //Empty box for synths + else if(extendedtank) boxtype = /obj/item/weapon/storage/box/engineer //Special box for engineers diff --git a/polaris.dme b/polaris.dme index 18b44ecbf97..150b5e4f1d9 100644 --- a/polaris.dme +++ b/polaris.dme @@ -224,6 +224,29 @@ #include "code\datums\observation\turf_changed.dm" #include "code\datums\observation\unequipped.dm" #include "code\datums\observation\~cleanup.dm" +#include "code\datums\outfits\_defines.dm" +#include "code\datums\outfits\horror_killers.dm" +#include "code\datums\outfits\misc.dm" +#include "code\datums\outfits\nanotrasen.dm" +#include "code\datums\outfits\outfit.dm" +#include "code\datums\outfits\pirates.dm" +#include "code\datums\outfits\spec_op.dm" +#include "code\datums\outfits\tournament.dm" +#include "code\datums\outfits\wizardry.dm" +#include "code\datums\outfits\jobs\_defines.dm" +#include "code\datums\outfits\jobs\cargo.dm" +#include "code\datums\outfits\jobs\civilian.dm" +#include "code\datums\outfits\jobs\command.dm" +#include "code\datums\outfits\jobs\engineering.dm" +#include "code\datums\outfits\jobs\job.dm" +#include "code\datums\outfits\jobs\medical.dm" +#include "code\datums\outfits\jobs\misc.dm" +#include "code\datums\outfits\jobs\science.dm" +#include "code\datums\outfits\jobs\security.dm" +#include "code\datums\outfits\military\fleet.dm" +#include "code\datums\outfits\military\marines.dm" +#include "code\datums\outfits\military\military.dm" +#include "code\datums\outfits\military\sifguard.dm" #include "code\datums\repositories\cameras.dm" #include "code\datums\repositories\crew.dm" #include "code\datums\repositories\decls.dm" @@ -841,8 +864,6 @@ #include "code\game\objects\items\weapons\AI_modules.dm" #include "code\game\objects\items\weapons\autopsy.dm" #include "code\game\objects\items\weapons\candle.dm" -#include "code\game\objects\items\weapons\cards_ids.dm" -#include "code\game\objects\items\weapons\cards_ids_syndicate.dm" #include "code\game\objects\items\weapons\cigs_lighters.dm" #include "code\game\objects\items\weapons\clown_items.dm" #include "code\game\objects\items\weapons\cosmetics.dm" @@ -909,6 +930,9 @@ #include "code\game\objects\items\weapons\grenades\grenade.dm" #include "code\game\objects\items\weapons\grenades\smokebomb.dm" #include "code\game\objects\items\weapons\grenades\spawnergrenade.dm" +#include "code\game\objects\items\weapons\id cards\cards.dm" +#include "code\game\objects\items\weapons\id cards\station_ids.dm" +#include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" #include "code\game\objects\items\weapons\implants\implant.dm" #include "code\game\objects\items\weapons\implants\implantcase.dm" #include "code\game\objects\items\weapons\implants\implantchair.dm"