diff --git a/code/datums/outfits/_defines.dm b/code/datums/outfits/_defines.dm new file mode 100644 index 0000000000..d105fc0ebc --- /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 0000000000..c0051b1a18 --- /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 0000000000..8e39427315 --- /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 0000000000..e8974f09f9 --- /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 0000000000..5d1ff7b1d5 --- /dev/null +++ b/code/datums/outfits/jobs/civilian.dm @@ -0,0 +1,63 @@ +/decl/hierarchy/outfit/job/assistant + name = OUTFIT_JOB_NAME("Assistant") + +/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 + +/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/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 0000000000..36f7bbc532 --- /dev/null +++ b/code/datums/outfits/jobs/command.dm @@ -0,0 +1,35 @@ +/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) diff --git a/code/datums/outfits/jobs/engineering.dm b/code/datums/outfits/jobs/engineering.dm new file mode 100644 index 0000000000..1eda9d5de0 --- /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 0000000000..68d4507fd4 --- /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 0000000000..cf324a9114 --- /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 + head = null + +/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 + 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 0000000000..43bbd919f8 --- /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 0000000000..441ac38baf --- /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 diff --git a/code/datums/outfits/jobs/security.dm b/code/datums/outfits/jobs/security.dm new file mode 100644 index 0000000000..aee81c7b77 --- /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/misc.dm b/code/datums/outfits/misc.dm new file mode 100644 index 0000000000..f7dc6e0f33 --- /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 0000000000..4fd219685b --- /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 0000000000..92bdae19f7 --- /dev/null +++ b/code/datums/outfits/outfit.dm @@ -0,0 +1,187 @@ +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() + +// A proc for non-human species, specially Unathi and Tajara, since they e.g. +// can't normally wear gloves as humans. Correct this issue by trying again, but +// apply some changes to the said item. +// +// Currently checks for gloves +// +// If you want to add more items that has species restriction, consider follow- +// ing the same format as the gloves shown in the code below. Thanks. +/decl/hierarchy/outfit/proc/check_and_try_equip_xeno(mob/living/carbon/human/H) + var/datum/species/S = H.species + if (!S || istype(S, /datum/species/human)) // null failcheck & get out here you damn humans + return + +// end of check_and_try_equip_xeno + +/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,i\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 59% rename from code/game/objects/items/weapons/cards_ids.dm rename to code/game/objects/items/weapons/id cards/station_ids.dm index 3f00543008..79d2040427 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -1,365 +1,397 @@ -/* 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() + ..() + access |= list(access_heads) + +/obj/item/weapon/card/id/silver/hop/New() + ..() + 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() + 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() + ..() + access |= list(access_morgue, access_surgery, access_virology, access_eva) + +/obj/item/weapon/card/id/medical/chemist/New() + ..() + access |= list(access_chemistry) + +/obj/item/weapon/card/id/medical/geneticist/New() + ..() + access |= list(access_morgue, access_genetics) + +/obj/item/weapon/card/id/medical/psychiatrist/New() + ..() + access |= list(access_psychiatrist) + +/obj/item/weapon/card/id/medical/paramedic/New() + ..() + 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." + 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() + ..() + access |= list(access_brig) + +/obj/item/weapon/card/id/security/detective/New() + ..() + access |= list(access_forensics_lockers, access_morgue) + +/obj/item/weapon/card/id/security/warden/New() + ..() + 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" + 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() + ..() + access |= list(access_engine_equip, access_tech_storage) + +/obj/item/weapon/card/id/engineering/atmos/New() + ..() + 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" + 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() + ..() + access |= list(access_tox, access_tox_storage, access_xenoarch) + +/obj/item/weapon/card/id/science/xenobiologist/New() + ..() + access |= list(access_xenobiology, access_hydroponics, access_tox_storage) + +/obj/item/weapon/card/id/science/roboticist/New() + ..() + 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" + 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() + ..() + access |= list(access_maint_tunnels, access_cargo, access_cargo_bot) + +/obj/item/weapon/card/id/cargo/mining/New() + ..() + 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" + 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/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) + access = list() + +/obj/item/weapon/card/id/civilian/bartender/New() + ..() + access |= list(access_bar) + +/obj/item/weapon/card/id/civilian/botanist/New() + ..() + access |= list(access_hydroponics) + +/obj/item/weapon/card/id/civilian/chaplain/New() + ..() + access |= list(access_chapel_office, access_crematorium) + +/obj/item/weapon/card/id/civilian/chef/New() + ..() + access |= list(access_kitchen) + +/obj/item/weapon/card/id/civilian/internal_affairs_agent/New() + ..() + access |= list(access_lawyer, access_sec_doors, access_heads) + +/obj/item/weapon/card/id/civilian/janitor/New() + ..() + access |= list(access_janitor, access_maint_tunnels) + +/obj/item/weapon/card/id/civilian/librarian/New() + ..() + 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 b5c874868e..ce9e1c83a3 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 bb2768d69d..761193eb33 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 968e7459e5..c7e5484cc9 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -385,410 +385,31 @@ 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) - 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) + if(!H || !outfit) + return + if(undress) + H.delete_inventory(TRUE) + outfit.equip(H) + log_and_message_admins("changed the equipment of [key_name(H)] to [outfit.name].") /client/proc/startSinglo() diff --git a/polaris.dme b/polaris.dme index 5937eb81f2..1b4622133a 100644 --- a/polaris.dme +++ b/polaris.dme @@ -224,6 +224,25 @@ #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\repositories\cameras.dm" #include "code\datums\repositories\crew.dm" #include "code\datums\repositories\decls.dm" @@ -841,8 +860,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" @@ -910,6 +927,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"