From ff8063c68c4f2a0e60bb8986f1f4c691682a30f1 Mon Sep 17 00:00:00 2001 From: AnturK Date: Sun, 6 Sep 2015 20:06:10 +0200 Subject: [PATCH 1/6] Adds outfit datum --- code/datums/outfit.dm | 83 +++++++++++++++++++ .../mob/living/carbon/human/inventory.dm | 6 +- tgstation.dme | 1 + 3 files changed, 89 insertions(+), 1 deletion(-) create mode 100644 code/datums/outfit.dm diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm new file mode 100644 index 00000000000..8cdb053fc8a --- /dev/null +++ b/code/datums/outfit.dm @@ -0,0 +1,83 @@ +/datum/outfit + var/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/ears = 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 = null // In the list(path=count,otherpath=count) format + +/datum/outfit/proc/post_equip(mob/living/carbon/human/H) + //to be overriden for toggling internals, id binding, access etc + return + +/datum/outfit/proc/equip(mob/living/carbon/human/H) + //Start with uniform,suit,backpack for additional slots + if(uniform) + H.equip_to_slot_or_del(new uniform(H),slot_w_uniform) + if(suit) + H.equip_to_slot_or_del(new suit(H),slot_wear_suit) + if(back) + H.equip_to_slot_or_del(new back(H),slot_back) + if(belt) + H.equip_to_slot_or_del(new belt(H),slot_belt) + if(gloves) + H.equip_to_slot_or_del(new gloves(H),slot_gloves) + if(shoes) + H.equip_to_slot_or_del(new shoes(H),slot_shoes) + if(head) + H.equip_to_slot_or_del(new head(H),slot_head) + if(mask) + H.equip_to_slot_or_del(new mask(H),slot_wear_mask) + if(ears) + H.equip_to_slot_or_del(new ears(H),slot_ears) + if(glasses) + H.equip_to_slot_or_del(new glasses(H),slot_glasses) + if(id) + H.equip_to_slot_or_del(new id(H),slot_wear_id) + if(l_pocket) + H.equip_to_slot_or_del(new l_pocket(H),slot_l_store) + if(r_pocket) + H.equip_to_slot_or_del(new r_pocket(H),slot_r_store) + if(suit_store) + H.equip_to_slot_or_del(new suit_store(H),slot_s_store) + + if(l_hand) + H.put_in_l_hand(new l_hand(H)) + if(r_hand) + H.put_in_r_hand(new r_hand(H)) + + for(var/path in backpack_contents) + var/number = backpack_contents[path] + for(var/i=0,i Date: Mon, 7 Sep 2015 00:42:55 +0200 Subject: [PATCH 2/6] Admin equipment & ERT outfits --- code/datums/outfit.dm | 1 + code/modules/admin/verbs/debug.dm | 584 +----------------- code/modules/admin/verbs/one_click_antag.dm | 20 +- code/modules/clothing/outfits/ert.dm | 172 ++++++ code/modules/clothing/outfits/standard.dm | 365 +++++++++++ .../mob/living/carbon/human/inventory.dm | 14 +- tgstation.dme | 2 + 7 files changed, 580 insertions(+), 578 deletions(-) create mode 100644 code/modules/clothing/outfits/ert.dm create mode 100644 code/modules/clothing/outfits/standard.dm diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 8cdb053fc8a..8879aeb4950 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -66,6 +66,7 @@ post_equip(H) + return 1 //Example /datum/outfit/test name = "Test Outfit" diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 0a17da3fdce..1c25137d533 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -624,40 +624,21 @@ var/global/list/g_fancy_list_of_types = null alert("Invalid mob") return //log_admin("[key_name(src)] has alienized [M.key].") - var/list/dresspacks = list( - "naked", - "as job...", - "standard space gear", - "tournament standard red", - "tournament standard green", - "tournament gangster", - "tournament chef", - "tournament janitor", - "laser tag red", - "laser tag blue", - "pirate", - "space pirate", - "soviet admiral", - "tunnel clown", - "masked killer", - "assassin", - "mobster", - "death commando", - "emergency response officer", - "centcom official", - "centcom commander", - "special ops officer", - "blue wizard", - "red wizard", - "marisa wizard", - "plasmaman" - ) - var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in dresspacks + + + var/list/outfits = list("Naked","Custom","As Job...") + var/list/paths = typesof(/datum/outfit) - /datum/outfit + for(var/path in paths) + var/datum/outfit/O = path //not much to initalize here but whatever + outfits[initial(O.name)] = path + + + var/dresscode = input("Select dress for [M]", "Robust quick dress shop") as null|anything in outfits if (isnull(dresscode)) return var/datum/job/jobdatum - if (dresscode == "as job...") + if (dresscode == "As Job...") var/jobname = input("Select job", "Robust quick dress shop") as null|anything in get_all_jobs() if(isnull(jobname)) return @@ -670,347 +651,18 @@ var/global/list/g_fancy_list_of_types = null continue qdel(I) switch(dresscode) - if ("naked") + if ("Naked") //do nothing - - if ("as job...") + if ("Custom") + //use custom one + if ("As Job...") if(jobdatum) dresscode = jobdatum.title M.job = jobdatum.title jobdatum.equip(M) - if ("standard space gear") - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) - - 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/sneakers/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/destroyer(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/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/rank/det(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) - - M.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(M), slot_head) - - M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/ammo_box/c10mm(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/toggle/chef(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/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/kitchen/rollingpin(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/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/sneakers/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/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/stack/tile/plasteel(M), slot_in_backpack) - - if ("laser tag red") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/red(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/red(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/red(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/redtaghelm(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/redtag(M), slot_wear_suit) - 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) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/laser/redtag(M), slot_s_store) - - if ("laser tag blue") - M.equip_to_slot_or_del(new /obj/item/clothing/under/color/blue(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/blue(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/blue(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/bluetaghelm(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/bluetag(M), slot_wear_suit) - 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) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/laser/bluetag(M), slot_s_store) - - 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/sneakers/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/sneakers/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("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/color/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_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), slot_l_store) - 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.access = get_all_accesses() - W.assignment = "Tunnel Clown!" - W.registered_name = M.real_name - W.update_label(M.real_name) - M.equip_to_slot_or_del(W, slot_wear_id) - - var/obj/item/weapon/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/sneakers/white(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/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_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/kitchen/knife(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/scalpel(M), slot_r_store) - - var/obj/item/weapon/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") - var/obj/item/clothing/under/U = new /obj/item/clothing/under/suit_jacket(M) - M.equip_to_slot_or_del(U, slot_w_uniform) - U.attachTie(new /obj/item/clothing/tie/waistcoat(M)) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - 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/melee/energy/sword/saber(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/stack/spacecash/c1000 - sec_briefcase.contents += new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow - sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_box/a357 - sec_briefcase.contents += new /obj/item/weapon/c4 - 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.update_label() - - M.equip_to_slot_or_del(pda, slot_belt) - - var/obj/item/weapon/card/id/syndicate/W = new(M) - W.access = get_all_accesses() - W.assignment = "Reaper" - W.registered_name = M.real_name - W.update_label(M.real_name) - M.equip_to_slot_or_del(W, slot_wear_id) -// DEATH SQUADS - if("death commando") - equip_deathsquad(M) - - if("emergency response officer") - var/alert - if(alert("Code Red ERT?","Select Response Level","Yes","No")=="Yes") - alert = 1 - else - alert = 0 - switch(input("Which class?") in list("Commander","Security","Engineer","Medic")) - if("Commander") - equip_emergencyresponsesquad(M, "commander",alert) - if("Security") - equip_emergencyresponsesquad(M, "sec",alert) - if("Engineer") - equip_emergencyresponsesquad(M, "eng",alert) - if("Medic") - equip_emergencyresponsesquad(M, "med",alert) - - if("centcom official") - equip_centcomofficial(M) - - if("centcom commander") - M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/centcom_commander(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/bulletproof(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat/swat(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/headset_cent/commander(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/cohiba(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/centhat(M), slot_head) - 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/weapon/lighter(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_l_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.icon_state = "centcom" - W.access = get_all_accesses() - W.access += get_centcom_access("Centcom Commander") - W.assignment = "Centcom Commander" - W.registered_name = M.real_name - W.update_label() - M.equip_to_slot_or_del(W, slot_wear_id) - - if("special ops officer") - var/obj/item/device/radio/headset/R = new /obj/item/device/radio/headset/headset_cent/commander(M) - R.set_frequency(CENTCOM_FREQ) - R.freqlock = 1 - M.equip_to_slot_or_del(R, slot_ears) - - M.equip_to_slot_or_del(new /obj/item/clothing/under/syndicate(M), slot_w_uniform) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/officer(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/shoes/combat/swat(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/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/cigarette/cigar/havana(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/m1911(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/lighter(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.icon_state = "centcom" - W.access = get_all_accesses() - W.access += get_centcom_access("Special Ops Officer") - W.assignment = "Special Ops Officer" - W.registered_name = M.real_name - W.update_label() - 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_ears) - 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_ears) - 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_ears) - 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/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/headset_cent(M), slot_ears) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/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.icon_state = "centcom" - W.access = get_all_accesses() - W.access += get_centcom_access("Admiral") - W.assignment = "Admiral" - W.registered_name = M.real_name - W.update_label() - M.equip_to_slot_or_del(W, slot_wear_id) - - if("mobster") - M.equip_to_slot_or_del(new /obj/item/clothing/head/fedora(M), slot_head) - 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/color/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset(M), slot_ears) - 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/gun/projectile/automatic/tommygun(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/clothing/under/suit_jacket/really_black(M), slot_w_uniform) - - var/obj/item/weapon/card/id/W = new(M) - W.assignment = "Assistant" - W.registered_name = M.real_name - W.update_label() - M.equip_to_slot_or_del(W, slot_wear_id) - - if("plasmaman") - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/plasmaman(M), slot_head) - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/eva/plasmaman(M),slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/internals/plasmaman/full(M),slot_back) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/breath(M),slot_wear_mask) + else + M.equipOutfit(outfits[dresscode]) M.regenerate_icons() @@ -1104,204 +756,4 @@ var/global/list/g_fancy_list_of_types = null for(var/path in SSgarbage.noqdelhint) dat += "[path]
" - usr << browse(dat, "window=dellog") - - - -//Deathsquad -/proc/equip_deathsquad(mob/living/carbon/human/M, officer) - var/obj/item/device/radio/R = new /obj/item/device/radio/headset/headset_cent/alt(M) - R.set_frequency(CENTCOM_FREQ) - R.freqlock = 1 - M.equip_to_slot_or_del(R, slot_ears) - - if(officer) - M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/beret(M), slot_head) - //else - // M.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/deathsquad(M), slot_head) - - M.equip_to_slot_or_del(new /obj/item/clothing/suit/space/hardsuit/deathsquad(M), slot_wear_suit) - 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/combat/swat(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/clothing/mask/gas/sechailer/swat(M), slot_wear_mask) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/toggle/thermal(M), slot_glasses) - - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box(M), slot_in_backpack) - - M.equip_to_slot_or_del(new /obj/item/ammo_box/a357(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/flashbangs(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/device/flashlight(M), slot_in_backpack) - - M.equip_to_slot_or_del(new /obj/item/weapon/c4(M), slot_in_backpack) - - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/shield/energy(M), slot_r_store) - M.equip_to_slot_or_del(new /obj/item/weapon/tank/internals/emergency_oxygen(M), slot_s_store) - 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/weapon/gun/energy/pulse/loyalpin(M), slot_r_hand) - - - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M)//Here you go Deuryn - L.imp_in = M - L.implanted = 1 - M.sec_hud_set_implants() - - var/obj/item/weapon/card/id/W = new(M) - W.icon_state = "centcom" - W.access = get_all_accesses()//They get full station access. - W.access += get_centcom_access("Death Commando")//Let's add their alloted Centcom access. - W.assignment = "Death Commando" - W.registered_name = M.real_name - W.update_label(W.registered_name, W.assignment) - M.equip_to_slot_or_del(W, slot_wear_id) - -//Emergency Response Team -/proc/equip_emergencyresponsesquad(mob/living/carbon/human/M, ertrole, alert) - var/obj/item/weapon/card/id/W = null - var/obj/item/device/radio/R = new /obj/item/device/radio/headset/headset_cent/alt(M) - R.set_frequency(CENTCOM_FREQ) - R.freqlock = 1 - M.equip_to_slot_or_del(R, slot_ears) - - switch(ertrole) - if("commander") - W = new /obj/item/weapon/card/id/ert(M) - 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/combat/swat(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/clothing/suit/space/hardsuit/ert(M), slot_wear_suit) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/eyepatch(M), slot_glasses) - M.equip_to_slot_or_del(W, slot_wear_id) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/captain(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/full(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(M), slot_in_backpack) - - R.keyslot = new /obj/item/device/encryptionkey/heads/captain - - if(alert) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/loyalpin(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/energy/sword/saber(M), slot_l_store) - else - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/switchblade(M), slot_l_store) - - if("sec") - W = new /obj/item/weapon/card/id/ert/Security(M) - 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/combat/swat(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/clothing/suit/space/hardsuit/ert/sec(M), slot_wear_suit) - M.equip_to_slot_or_del(W, slot_wear_id) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/handcuffs(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/security/full(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(M), slot_in_backpack) - - R.keyslot = new /obj/item/device/encryptionkey/heads/hos - - if(alert) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/carbine/loyalpin(M), slot_in_backpack) - else - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(M), slot_in_backpack) - - if("med") - W = new /obj/item/weapon/card/id/ert/Medical(M) - 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/combat/swat(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/clothing/suit/space/hardsuit/ert/med(M), slot_wear_suit) - M.equip_to_slot_or_del(W, slot_wear_id) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/medic(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/medical(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(M), slot_r_hand) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(M), slot_in_backpack) - - R.keyslot = new /obj/item/device/encryptionkey/heads/cmo - - if(alert) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/loyalpin(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(M), slot_in_backpack) - else - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/hypospray/combat(M), slot_in_backpack) - - if("eng") - W = new /obj/item/weapon/card/id/ert/Engineer(M) - 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/combat/swat(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/clothing/suit/space/hardsuit/ert/engi(M), slot_wear_suit) - M.equip_to_slot_or_del(W, slot_wear_id) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/industrial(M), slot_back) - M.equip_to_slot_or_del(new /obj/item/clothing/glasses/meson/engine(M), slot_glasses) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/box/engineer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/rcd_ammo/large(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(M), slot_in_backpack) - - R.keyslot = new /obj/item/device/encryptionkey/heads/ce - - if(alert) - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer/swat(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/pulse/pistol/loyalpin(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/rcd/combat(M), slot_in_backpack) - else - M.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/sechailer(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(M), slot_in_backpack) - M.equip_to_slot_or_del(new /obj/item/weapon/rcd/loaded(M), slot_in_backpack) - - R.recalculateChannels() - - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(M) - L.imp_in = M - L.implanted = 1 - M.sec_hud_set_implants() - - if (W) - W.registered_name = M.real_name - W.update_label(W.registered_name, W.assignment) - - -/proc/equip_centcomofficial(mob/living/carbon/human/M) - 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/sneakers/black(M), slot_shoes) - M.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(M), slot_gloves) - M.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_cent(M), slot_ears) - 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/gun/energy/gun(M), slot_belt) - M.equip_to_slot_or_del(new /obj/item/weapon/pen(M), slot_l_store) - M.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(M), slot_back) - - var/obj/item/device/pda/heads/pda = new(M) - pda.owner = M.real_name - pda.ownjob = "Centcom Official" - pda.update_label() - - M.equip_to_slot_or_del(pda, slot_r_store) - - M.equip_to_slot_or_del(new /obj/item/weapon/clipboard(M), slot_l_hand) - - var/obj/item/weapon/card/id/W = new(M) - W.icon_state = "centcom" - W.access = get_centcom_access("Centcom Official") - W.access += access_weapons - W.assignment = "Centcom Official" - W.registered_name = M.real_name - W.update_label() - M.equip_to_slot_or_del(W, slot_wear_id) + usr << browse(dat, "window=dellog") \ No newline at end of file diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 25b84838539..1a7ea857617 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -330,10 +330,10 @@ ready_dna(Commando) if(numagents == 1) //If Squad Leader Commando.real_name = "Officer [pick(commando_names)]" - equip_deathsquad(Commando, 1) + Commando.equipOutfit(/datum/outfit/death_commando/officer) else Commando.real_name = "Trooper [pick(commando_names)]" - equip_deathsquad(Commando) + Commando.equipOutfit(/datum/outfit/death_commando) Commando.key = chosen_candidate.key Commando.mind.assigned_role = "Death Commando" for(var/obj/machinery/door/poddoor/ert/door in airlocks) @@ -425,7 +425,7 @@ newmob.real_name = newmob.dna.species.random_name(newmob.gender,1) newmob.key = chosen_candidate.key newmob.mind.assigned_role = "Centcom Official" - equip_centcomofficial(newmob) + newmob.equipOutfit(/datum/outfit/centcom_official) //Assign antag status and the mission ticker.mode.traitors += newmob.mind @@ -496,25 +496,25 @@ switch(numagents) if(1) ERTOperative.real_name = "Commander [ertname]" - equip_emergencyresponsesquad(ERTOperative, "commander",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/commander/alert : /datum/outfit/ert/commander) if(2) ERTOperative.real_name = "Security Officer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "sec",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/security/alert : /datum/outfit/ert/security) if(3) ERTOperative.real_name = "Medical Officer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "med",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/medic/alert : /datum/outfit/ert/medic) if(4) ERTOperative.real_name = "Engineer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "eng",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/engineer/alert : /datum/outfit/ert/engineer) if(5) ERTOperative.real_name = "Security Officer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "sec",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/security/alert : /datum/outfit/ert/security) if(6) ERTOperative.real_name = "Medical Officer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "med",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/medic/alert : /datum/outfit/ert/medic) if(7) ERTOperative.real_name = "Engineer [ertname]" - equip_emergencyresponsesquad(ERTOperative, "eng",redalert) + ERTOperative.equipOutfit(redalert ? /datum/outfit/ert/engineer/alert : /datum/outfit/ert/engineer) ERTOperative.key = chosen_candidate.key ERTOperative.mind.assigned_role = "ERT" diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm new file mode 100644 index 00000000000..c683ec8533b --- /dev/null +++ b/code/modules/clothing/outfits/ert.dm @@ -0,0 +1,172 @@ +/datum/outfit/ert + name = "ERT Common" + + uniform = /obj/item/clothing/under/rank/centcom_officer + shoes = /obj/item/clothing/shoes/combat/swat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/device/radio/headset/headset_cent/alt + +/datum/outfit/ert/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + H.sec_hud_set_implants() + + var/obj/item/device/radio/R = H.ears + R.set_frequency(CENTCOM_FREQ) + R.freqlock = 1 + + var/obj/item/weapon/card/id/W = H.wear_id + W.registered_name = H.real_name + W.update_label(W.registered_name, W.assignment) + +/datum/outfit/ert/commander + name = "ERT Commander" + + id = /obj/item/weapon/card/id/ert + suit = /obj/item/clothing/suit/space/hardsuit/ert + glasses = /obj/item/clothing/glasses/thermal/eyepatch + back = /obj/item/weapon/storage/backpack/captain + belt = /obj/item/weapon/storage/belt/security/full + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer=1,\ + /obj/item/weapon/gun/energy/gun=1) + l_pocket = /obj/item/weapon/switchblade + +/datum/outfit/ert/commander/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/device/radio/R = H.ears + R.keyslot = new /obj/item/device/encryptionkey/heads/captain + R.recalculateChannels() + +/datum/outfit/ert/commander/alert + name = "ERT Commander - High Alert" + + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer/swat=1,\ + /obj/item/weapon/gun/energy/pulse/pistol/loyalpin=1) + l_pocket = /obj/item/weapon/melee/energy/sword/saber + +/datum/outfit/ert/security + name = "ERT Security" + + id = /obj/item/weapon/card/id/ert/Security + suit = /obj/item/clothing/suit/space/hardsuit/ert/sec + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + back = /obj/item/weapon/storage/backpack/security + belt = /obj/item/weapon/storage/belt/security/full + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/storage/box/handcuffs=1,\ + /obj/item/clothing/mask/gas/sechailer=1,\ + /obj/item/weapon/gun/energy/gun=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/weapon/gun/energy/gun/advtaser=1) + +/datum/outfit/ert/security/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/device/radio/R = H.ears + R.keyslot = new /obj/item/device/encryptionkey/heads/hos + R.recalculateChannels() + +/datum/outfit/ert/security/alert + name = "ERT Security - High Alert" + + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/storage/box/handcuffs=1,\ + /obj/item/clothing/mask/gas/sechailer/swat=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/weapon/gun/energy/pulse/carbine/loyalpin=1) + + +/datum/outfit/ert/medic + name = "ERT Medic" + + id = /obj/item/weapon/card/id/ert/Medical + suit = /obj/item/clothing/suit/space/hardsuit/ert/med + glasses = /obj/item/clothing/glasses/hud/health + back = /obj/item/weapon/storage/backpack/medic + belt = /obj/item/weapon/storage/belt/medical + r_hand = /obj/item/weapon/storage/firstaid/regular + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer=1,\ + /obj/item/weapon/gun/energy/gun=1,\ + /obj/item/weapon/reagent_containers/hypospray/combat=1) + +/datum/outfit/ert/medic/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/device/radio/R = H.ears + R.keyslot = new /obj/item/device/encryptionkey/heads/cmo + R.recalculateChannels() + +/datum/outfit/ert/medic/alert + name = "ERT Medic - High Alert" + + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer/swat=1,\ + /obj/item/weapon/gun/energy/pulse/pistol/loyalpin=1,\ + /obj/item/weapon/reagent_containers/hypospray/combat/nanites=1) + +/datum/outfit/ert/engineer + name = "ERT Engineer" + + id = /obj/item/weapon/card/id/ert/Engineer + suit = /obj/item/clothing/suit/space/hardsuit/ert/engi + glasses = /obj/item/clothing/glasses/meson/engine + back = /obj/item/weapon/storage/backpack/industrial + belt = /obj/item/weapon/storage/belt/utility/full + l_pocket = /obj/item/weapon/rcd_ammo/large + r_hand = /obj/item/weapon/storage/firstaid/regular + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer=1,\ + /obj/item/weapon/gun/energy/gun=1,\ + /obj/item/weapon/rcd/loaded=1) + +/datum/outfit/ert/engineer/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/device/radio/R = H.ears + R.keyslot = new /obj/item/device/encryptionkey/heads/ce + R.recalculateChannels() + +/datum/outfit/ert/engineer/alert + name = "ERT Engineer - High Alert" + + backpack_contents = list(/obj/item/weapon/storage/box/engineer=1,\ + /obj/item/weapon/melee/baton/loaded=1,\ + /obj/item/clothing/mask/gas/sechailer/swat=1,\ + /obj/item/weapon/gun/energy/pulse/pistol/loyalpin=1,\ + /obj/item/weapon/rcd/combat=1) + + +/datum/outfit/centcom_official + name = "Centcom Official" + + uniform = /obj/item/clothing/under/rank/centcom_officer + shoes = /obj/item/clothing/shoes/sneakers/black + gloves = /obj/item/clothing/gloves/color/black + ears = /obj/item/device/radio/headset/headset_cent + glasses = /obj/item/clothing/glasses/sunglasses + belt = /obj/item/weapon/gun/energy/gun + l_pocket = /obj/item/weapon/pen + back = /obj/item/weapon/storage/backpack/satchel_norm + r_pocket = /obj/item/device/pda/heads + l_hand = /obj/item/weapon/clipboard + id = /obj/item/weapon/card/id + +/datum/outfit/centcom_official/post_equip(mob/living/carbon/human/H) + var/obj/item/device/pda/heads/pda = H.r_store + pda.owner = H.real_name + pda.ownjob = "Centcom Official" + pda.update_label() + + var/obj/item/weapon/card/id/W = H.wear_id + W.icon_state = "centcom" + W.access = get_centcom_access("Centcom Official") + W.access += access_weapons + W.assignment = "Centcom Official" + W.registered_name = H.real_name + W.update_label() \ No newline at end of file diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm new file mode 100644 index 00000000000..623edd0775d --- /dev/null +++ b/code/modules/clothing/outfits/standard.dm @@ -0,0 +1,365 @@ +/datum/outfit/space + name = "Standard Space Gear" + + uniform = /obj/item/clothing/under/color/grey + shoes = /obj/item/clothing/shoes/sneakers/black + suit = /obj/item/clothing/suit/space + head = /obj/item/clothing/head/helmet/space + back = /obj/item/weapon/tank/jetpack/oxygen + mask = /obj/item/clothing/mask/breath + +/datum/outfit/space/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/tank/jetpack/J = H.back + J.toggle() + J.Topic(null, list("stat" = 1)) + + +/datum/outfit/tournament + +/datum/outfit/tournament/ + name = "tournament standard red" + + uniform = /obj/item/clothing/under/color/red + shoes = /obj/item/clothing/shoes/sneakers/black + suit = /obj/item/clothing/suit/armor/vest + head = /obj/item/clothing/head/helmet/thunderdome + r_hand = /obj/item/weapon/gun/energy/pulse/destroyer + l_hand = /obj/item/weapon/kitchen/knife + r_pocket = /obj/item/weapon/grenade/smokebomb + + +/datum/outfit/tournament/red + name = "tournament standard green" + + uniform = /obj/item/clothing/under/color/green + +/datum/outfit/tournament/gangster + name = "tournament gangster" + uniform = /obj/item/clothing/under/rank/det + suit = /obj/item/clothing/suit/det_suit + glasses = /obj/item/clothing/glasses/thermal/monocle + head = /obj/item/clothing/head/det_hat + r_hand = /obj/item/weapon/gun/projectile + l_hand = null + r_pocket = /obj/item/ammo_box/c10mm + +/datum/outfit/tournament/janitor + name = "tournament janitor" + + uniform = /obj/item/clothing/under/rank/janitor + back = /obj/item/weapon/storage/backpack + suit = null + head = null + r_hand = /obj/item/weapon/mop + l_hand = /obj/item/weapon/reagent_containers/glass/bucket + r_pocket = /obj/item/weapon/grenade/chem_grenade/cleaner + l_pocket = /obj/item/weapon/grenade/chem_grenade/cleaner + backpack_contents = list(/obj/item/stack/tile/plasteel=6) + +/datum/outfit/tournament/janitor/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/reagent_containers/glass/bucket/bucket = H.l_hand + bucket.reagents.add_reagent("water",70) + +/datum/outfit/laser_tag + name = "Laser Tag Red" + + uniform = /obj/item/clothing/under/color/red + shoes = /obj/item/clothing/shoes/sneakers/red + head = /obj/item/clothing/head/helmet/redtaghelm + gloves = /obj/item/clothing/gloves/color/red + ears = /obj/item/device/radio/headset + suit = /obj/item/clothing/suit/redtag + back = /obj/item/weapon/storage/backpack + suit_store = /obj/item/weapon/gun/energy/laser/redtag + backpack_contents = list(/obj/item/weapon/storage/box=1) + +/datum/outfit/laser_tag/blue + name = "Laser Tag Blue" + uniform = /obj/item/clothing/under/color/blue + shoes = /obj/item/clothing/shoes/sneakers/blue + head = /obj/item/clothing/head/helmet/bluetaghelm + gloves = /obj/item/clothing/gloves/color/blue + suit = /obj/item/clothing/suit/bluetag + suit_store = /obj/item/weapon/gun/energy/laser/bluetag + +/datum/outfit/pirate + name = "Pirate" + + uniform = /obj/item/clothing/under/pirate + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/bandana + glasses = /obj/item/clothing/glasses/eyepatch + r_hand = /obj/item/weapon/melee/energy/sword/pirate + +/datum/outfit/pirate/space + name = "Space Pirate" + + suit = /obj/item/clothing/suit/space/pirate + head = /obj/item/clothing/head/helmet/space/pirate + +/datum/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/color/black + mask = /obj/item/clothing/mask/gas/clown_hat + ears = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/thermal/monocle + suit = /obj/item/clothing/suit/hooded/chaplain_hoodie + l_pocket = /obj/item/weapon/reagent_containers/food/snacks/grown/banana + r_pocket = /obj/item/weapon/bikehorn + id = /obj/item/weapon/card/id + r_hand = /obj/item/weapon/twohanded/fireaxe + +/datum/outfit/tunnel_clown/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/W = H.wear_id + W.access = get_all_accesses() + W.assignment = "Tunnel Clown!" + W.registered_name = H.real_name + W.update_label(H.real_name) + +/datum/outfit/psycho + name = "Masked Killer" + + uniform = /obj/item/clothing/under/overalls + shoes = /obj/item/clothing/shoes/sneakers/white + gloves = /obj/item/clothing/gloves/color/latex + mask = /obj/item/clothing/mask/surgical + head = /obj/item/clothing/head/welding + ears = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/thermal/monocle + suit = /obj/item/clothing/suit/apron + l_pocket = /obj/item/weapon/kitchen/knife + r_pocket = /obj/item/weapon/scalpel + r_hand = /obj/item/weapon/twohanded/fireaxe + +/datum/outfit/psycho/post_equip(mob/living/carbon/human/H) + for(var/obj/item/carried_item in H.contents) + if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant. + carried_item.add_blood(H)//Oh yes, there will be blood... + H.regenerate_icons() + +/datum/outfit/assassin + name = "Assassin" + + uniform = /obj/item/clothing/under/suit_jacket + shoes = /obj/item/clothing/shoes/sneakers/black + gloves = /obj/item/clothing/gloves/color/black + ears = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/sunglasses + l_pocket = /obj/item/weapon/melee/energy/sword/saber + l_hand = /obj/item/weapon/storage/secure/briefcase + id = /obj/item/weapon/card/id/syndicate + belt = /obj/item/device/pda/heads + +/datum/outfit/assassin/post_equip(mob/living/carbon/human/H) + var/obj/item/clothing/under/U = H.w_uniform + U.attachTie(new /obj/item/clothing/tie/waistcoat(H)) + + //Could use a type + var/obj/item/weapon/storage/secure/briefcase/sec_briefcase = H.l_hand + for(var/obj/item/briefcase_item in sec_briefcase) + qdel(briefcase_item) + for(var/i=3, i>0, i--) + sec_briefcase.handle_item_insertion(new /obj/item/stack/spacecash/c1000,1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/energy/kinetic_accelerator/crossbow,1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/gun/projectile/revolver/mateba,1) + sec_briefcase.handle_item_insertion(new /obj/item/ammo_box/a357,1) + sec_briefcase.handle_item_insertion(new /obj/item/weapon/c4,1) + + var/obj/item/device/pda/heads/pda = H.belt + pda.owner = H.real_name + pda.ownjob = "Reaper" + pda.update_label() + + var/obj/item/weapon/card/id/syndicate/W = H.wear_id + W.access = get_all_accesses() + W.assignment = "Reaper" + W.registered_name = H.real_name + W.update_label(H.real_name) + +/datum/outfit/centcom_commander + name = "Centcom Commander" + + uniform = /obj/item/clothing/under/rank/centcom_commander + suit = /obj/item/clothing/suit/armor/bulletproof + shoes = /obj/item/clothing/shoes/combat/swat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/device/radio/headset/headset_cent/commander + glasses = /obj/item/clothing/glasses/eyepatch + mask = /obj/item/clothing/mask/cigarette/cigar/cohiba + head = /obj/item/clothing/head/centhat + belt = /obj/item/weapon/gun/projectile/revolver/mateba + r_pocket = /obj/item/weapon/lighter + l_pocket = /obj/item/ammo_box/a357 + back = /obj/item/weapon/storage/backpack/satchel + id = /obj/item/weapon/card/id + +/datum/outfit/centcom_commander/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/W = H.wear_id + W.icon_state = "centcom" + W.access = get_all_accesses() + W.access += get_centcom_access("Centcom Commander") + W.assignment = "Centcom Commander" + W.registered_name = H.real_name + W.update_label() + +/datum/outfit/spec_ops + name = "Special Ops Officer" + + uniform = /obj/item/clothing/under/syndicate + suit = /obj/item/clothing/suit/space/officer + shoes = /obj/item/clothing/shoes/combat/swat + gloves = /obj/item/clothing/gloves/combat + glasses = /obj/item/clothing/glasses/thermal/eyepatch + ears = /obj/item/device/radio/headset/headset_cent/commander + mask = /obj/item/clothing/mask/cigarette/cigar/havana + head = /obj/item/clothing/head/helmet/space/beret + belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911 + r_pocket = /obj/item/weapon/lighter + back = /obj/item/weapon/storage/backpack/satchel + id = /obj/item/weapon/card/id + +/datum/outfit/spec_ops/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/W = H.wear_id + W.icon_state = "centcom" + W.access = get_all_accesses() + W.access += get_centcom_access("Special Ops Officer") + W.assignment = "Special Ops Officer" + W.registered_name = H.real_name + W.update_label() + + var/obj/item/device/radio/headset/R = H.ears + R.set_frequency(CENTCOM_FREQ) + R.freqlock = 1 + +/datum/outfit/wizard + name = "Blue Wizard" + + uniform = /obj/item/clothing/under/color/lightpurple + suit = /obj/item/clothing/suit/wizrobe + shoes = /obj/item/clothing/shoes/sandal + ears = /obj/item/device/radio/headset + head = /obj/item/clothing/head/wizard + r_pocket = /obj/item/weapon/teleportation_scroll + r_hand = /obj/item/weapon/spellbook + l_hand = /obj/item/weapon/staff + back = /obj/item/weapon/storage/backpack + backpack_contents = list(/obj/item/weapon/storage/box=1) + +/datum/outfit/wizard/red + name = "Red Wizard" + + suit = /obj/item/clothing/suit/wizrobe/red + head = /obj/item/clothing/head/wizard/red + +/datum/outfit/wizard/weeb + name = "Marisa Wizard" + + suit = /obj/item/clothing/suit/wizrobe/marisa + shoes = /obj/item/clothing/shoes/sandal/marisa + head = /obj/item/clothing/head/wizard/marisa + +/datum/outfit/soviet + name = "Soviet Admiral" + + uniform = /obj/item/clothing/under/soviet + head = /obj/item/clothing/head/hgpiratecap + shoes = /obj/item/clothing/shoes/combat + gloves = /obj/item/clothing/gloves/combat + ears = /obj/item/device/radio/headset/headset_cent + glasses = /obj/item/clothing/glasses/thermal/eyepatch + suit = /obj/item/clothing/suit/hgpirate + back = /obj/item/weapon/storage/backpack/satchel + belt = /obj/item/weapon/gun/projectile/revolver/mateba + + id = /obj/item/weapon/card/id + +/datum/outfit/soviet/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/W = H.wear_id + W.icon_state = "centcom" + W.access = get_all_accesses() + W.access += get_centcom_access("Admiral") + W.assignment = "Admiral" + W.registered_name = H.real_name + W.update_label() + +/datum/outfit/mobster + name = "Mobster" + + uniform = /obj/item/clothing/under/suit_jacket/really_black + head = /obj/item/clothing/head/fedora + shoes = /obj/item/clothing/shoes/laceup + gloves = /obj/item/clothing/gloves/color/black + ears = /obj/item/device/radio/headset + glasses = /obj/item/clothing/glasses/sunglasses + r_hand = /obj/item/weapon/gun/projectile/automatic/tommygun + id = /obj/item/weapon/card/id + +/datum/outfit/mobster/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/W = H.wear_id + W.assignment = "Assistant" + W.registered_name = H.real_name + W.update_label() + +/datum/outfit/plasmaman + name = "Plasmaman" + + head = /obj/item/clothing/head/helmet/space/hardsuit/plasmaman + suit = /obj/item/clothing/suit/space/eva/plasmaman + back = /obj/item/weapon/tank/internals/plasmaman/full + mask = /obj/item/clothing/mask/breath + +/datum/outfit/death_commando + name = "Death Commando" + + uniform = /obj/item/clothing/under/color/green + suit = /obj/item/clothing/suit/space/hardsuit/deathsquad + shoes = /obj/item/clothing/shoes/combat/swat + gloves = /obj/item/clothing/gloves/combat + mask = /obj/item/clothing/mask/gas/sechailer/swat + glasses = /obj/item/clothing/glasses/hud/toggle/thermal + back = /obj/item/weapon/storage/backpack/security + l_pocket = /obj/item/weapon/melee/energy/sword/saber + r_pocket = /obj/item/weapon/shield/energy + suit_store = /obj/item/weapon/tank/internals/emergency_oxygen + belt = /obj/item/weapon/gun/projectile/revolver/mateba + r_hand = /obj/item/weapon/gun/energy/pulse/loyalpin + id = /obj/item/weapon/card/id + ears = /obj/item/device/radio/headset/headset_cent/alt + + backpack_contents = list(/obj/item/weapon/storage/box=1,\ + /obj/item/ammo_box/a357=1,\ + /obj/item/weapon/storage/firstaid/regular=1,\ + /obj/item/weapon/storage/box/flashbangs=1,\ + /obj/item/device/flashlight=1,\ + /obj/item/weapon/c4=1) + +/datum/outfit/death_commando/post_equip(mob/living/carbon/human/H) + var/obj/item/device/radio/R = H.ears + R.set_frequency(CENTCOM_FREQ) + R.freqlock = 1 + + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)//Here you go Deuryn + L.imp_in = H + L.implanted = 1 + H.sec_hud_set_implants() + + + var/obj/item/weapon/card/id/W = H.wear_id + W.icon_state = "centcom" + W.access = get_all_accesses()//They get full station access. + W.access += get_centcom_access("Death Commando")//Let's add their alloted Centcom access. + W.assignment = "Death Commando" + W.registered_name = H.real_name + W.update_label(W.registered_name, W.assignment) + +/datum/outfit/death_commando/officer + name = "Death Commando Officer" + head = /obj/item/clothing/head/helmet/space/beret + + + + + \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm index b4cd8063e39..d1c5b5bec1f 100644 --- a/code/modules/mob/living/carbon/human/inventory.dm +++ b/code/modules/mob/living/carbon/human/inventory.dm @@ -474,5 +474,15 @@ return shredded /mob/living/carbon/human/proc/equipOutfit(outfit) - var/datum/outfit/O = new outfit - O.equip(src) \ No newline at end of file + var/datum/outfit/O = null + + if(ispath(outfit)) + O = new outfit + else + O = outfit + if(!istype(O)) + return 0 + if(!O) + return 0 + + return O.equip(src) \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 9b4df0cae4e..16f91b9670f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -921,6 +921,8 @@ #include "code\modules\clothing\masks\gasmask.dm" #include "code\modules\clothing\masks\hailer.dm" #include "code\modules\clothing\masks\miscellaneous.dm" +#include "code\modules\clothing\outfits\ert.dm" +#include "code\modules\clothing\outfits\standard.dm" #include "code\modules\clothing\shoes\bananashoes.dm" #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" From b3b18d0080253e1af1b1a10aa07e67c7a5d0ddad Mon Sep 17 00:00:00 2001 From: AnturK Date: Mon, 7 Sep 2015 18:13:08 +0200 Subject: [PATCH 3/6] Job Outfits --- code/datums/outfit.dm | 8 +- code/game/jobs/job/assistant.dm | 21 +- code/game/jobs/job/captain.dm | 71 +++--- code/game/jobs/job/cargo_service.dm | 138 +++++++----- code/game/jobs/job/civilian.dm | 112 +++++---- code/game/jobs/job/civilian_chaplain.dm | 13 +- code/game/jobs/job/engineering.dm | 85 ++++--- code/game/jobs/job/job.dm | 84 +++---- code/game/jobs/job/medical.dm | 109 +++++---- code/game/jobs/job/science.dm | 62 +++-- code/game/jobs/job/security.dm | 287 +++++++++++++----------- 11 files changed, 556 insertions(+), 434 deletions(-) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 8879aeb4950..9ee454ce6f0 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -17,13 +17,19 @@ var/suit_store = null var/r_hand = null var/l_hand = null - var/list/backpack_contents = null // In the list(path=count,otherpath=count) format + var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format + +/datum/outfit/proc/pre_equip(mob/living/carbon/human/H) + //to be overriden for customization depending on client prefs,species etc + return /datum/outfit/proc/post_equip(mob/living/carbon/human/H) //to be overriden for toggling internals, id binding, access etc return /datum/outfit/proc/equip(mob/living/carbon/human/H) + pre_equip(H) + //Start with uniform,suit,backpack for additional slots if(uniform) H.equip_to_slot_or_del(new uniform(H),slot_w_uniform) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 7733a3be546..9a1822fad7e 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -12,13 +12,7 @@ Assistant selection_color = "#dddddd" access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() - -/datum/job/assistant/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - if (config.grey_assistants) - H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/color/random(H), slot_w_uniform) + outfit = /datum/outfit/job/assistant /datum/job/assistant/get_access() if((config.jobs_have_maint_access & ASSISTANTS_HAVE_MAINT_ACCESS) || !config.jobs_have_minimal_access) //Config has assistant maint access set @@ -32,4 +26,15 @@ Assistant total_positions = config.assistant_cap spawn_positions = config.assistant_cap return 1 - return 0 \ No newline at end of file + return 0 + + +/datum/outfit/job/assistant + name = "Assistant" + +/datum/outfit/job/assistant/pre_equip(mob/living/carbon/human/H) + ..() + if (config.grey_assistants) + uniform = /obj/item/clothing/under/color/grey + else + uniform = /obj/item/clothing/under/color/random diff --git a/code/game/jobs/job/captain.dm b/code/game/jobs/job/captain.dm index 7d345e71a3b..57cc571b705 100644 --- a/code/game/jobs/job/captain.dm +++ b/code/game/jobs/job/captain.dm @@ -14,29 +14,37 @@ Captain req_admin_notify = 1 minimal_player_age = 14 - default_id = /obj/item/weapon/card/id/gold - default_pda = /obj/item/device/pda/captain - default_headset = /obj/item/device/radio/headset/heads/captain - default_backpack = /obj/item/weapon/storage/backpack/captain - default_satchel = /obj/item/weapon/storage/backpack/satchel_cap + outfit = /datum/outfit/job/captain access = list() //See get_access() minimal_access = list() //See get_access() -/datum/job/captain/equip_items(mob/living/carbon/human/H) - var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/captain(H) +/datum/job/captain/get_access() + return get_all_accesses() + + +/datum/outfit/job/captain + name = "Captain" + + id = /obj/item/weapon/card/id/gold + belt = /obj/item/device/pda/captain + ears = /obj/item/device/radio/headset/heads/captain + uniform = /obj/item/clothing/under/rank/captain + suit = /obj/item/clothing/suit/armor/vest/capcarapace + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/caphat + backpack_contents = list(/obj/item/weapon/storage/box/silver_ids=1,\ + /obj/item/weapon/melee/classic_baton/telescopic=1) + + backpack = /obj/item/weapon/storage/backpack/captain + satchel = /obj/item/weapon/storage/backpack/satchel_cap + +/datum/outfit/job/captain/post_equip(mob/living/carbon/human/H) + ..() + + var/obj/item/clothing/under/U = H.w_uniform U.attachTie(new /obj/item/clothing/tie/medal/gold/captain()) - H.equip_to_slot_or_del(U, slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/capcarapace(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/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) - //Equip ID box & telebaton - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/silver_ids(H.back), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) - - //Implant him var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 @@ -44,9 +52,6 @@ Captain minor_announce("Captain [H.real_name] on deck!") -/datum/job/captain/get_access() - return get_all_accesses() - /* Head of Personnel */ @@ -63,9 +68,7 @@ Head of Personnel req_admin_notify = 1 minimal_player_age = 10 - default_id = /obj/item/weapon/card/id/silver - default_pda = /obj/item/device/pda/heads/hop - default_headset = /obj/item/device/radio/headset/heads/hop + outfit = /datum/outfit/job/hop access = list(access_security, access_sec_doors, access_court, access_weapons, access_medical, access_engine, access_change_ids, access_ai_upload, access_eva, access_heads, @@ -81,13 +84,19 @@ Head of Personnel access_hop, access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom) -/datum/job/hop/equip_items(mob/living/carbon/human/H) - 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/sneakers/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/hopcap(H), slot_head) +/datum/outfit/job/hop + name = "Head of Personnel" - //Equip ID box & telebaton - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(H.back), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + id = /obj/item/weapon/card/id/silver + belt = /obj/item/device/pda/heads/hop + ears = /obj/item/device/radio/headset/heads/hop + uniform = /obj/item/clothing/under/rank/head_of_personnel + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/hopcap + backpack_contents = list(/obj/item/weapon/storage/box/ids=1,\ + /obj/item/weapon/melee/classic_baton/telescopic=1) - announce_head(H, list("Supply", "Service")) //tell underlings (suuply/service) they have a head +/datum/outfit/job/hop/post_equip(mob/living/carbon/human/H) + ..() + + announce_head(H, list("Supply", "Service")) diff --git a/code/game/jobs/job/cargo_service.dm b/code/game/jobs/job/cargo_service.dm index 5fcb2be02bf..1eeca19eaa5 100644 --- a/code/game/jobs/job/cargo_service.dm +++ b/code/game/jobs/job/cargo_service.dm @@ -12,17 +12,20 @@ Quartermaster supervisors = "the head of personnel" selection_color = "#d7b088" - default_pda = /obj/item/device/pda/quartermaster - default_headset = /obj/item/device/radio/headset/headset_cargo + outfit = /datum/outfit/job/quartermaster access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) -/datum/job/qm/equip_items(mob/living/carbon/human/H) - 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/sneakers/brown(H), slot_shoes) - 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) +/datum/outfit/job/quartermaster + name = "Quartermaster" + + belt = /obj/item/device/pda/quartermaster + ears = /obj/item/device/radio/headset/headset_cargo + uniform = /obj/item/clothing/under/rank/cargo + shoes = /obj/item/clothing/shoes/sneakers/brown + glasses = /obj/item/clothing/glasses/sunglasses + l_hand = /obj/item/weapon/clipboard /* Cargo Technician @@ -38,15 +41,18 @@ Cargo Technician supervisors = "the quartermaster and the head of personnel" selection_color = "#dcba97" - default_pda = /obj/item/device/pda/cargo - default_headset = /obj/item/device/radio/headset/headset_cargo + outfit = /datum/outfit/job/cargo_tech access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_maint_tunnels, access_cargo, access_cargo_bot, access_mailsorting, access_mineral_storeroom) -/datum/job/cargo_tech/equip_items(mob/living/carbon/human/H) - 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/sneakers/black(H), slot_shoes) +/datum/outfit/job/cargo_tech + name = "Cargo Technician" + + belt = /obj/item/device/pda/cargo + ears = /obj/item/device/radio/headset/headset_cargo + uniform = /obj/item/clothing/under/rank/cargotech + /* Shaft Miner @@ -62,23 +68,25 @@ Shaft Miner supervisors = "the quartermaster and the head of personnel" selection_color = "#dcba97" - default_pda = /obj/item/device/pda/shaftminer - default_headset = /obj/item/device/radio/headset/headset_cargo - default_backpack = /obj/item/weapon/storage/backpack/industrial - default_satchel = /obj/item/weapon/storage/backpack/satchel_eng - default_storagebox = /obj/item/weapon/storage/box/engineer + outfit = /datum/outfit/job/miner access = list(access_maint_tunnels, access_mailsorting, access_cargo, access_cargo_bot, access_qm, access_mining, access_mining_station, access_mineral_storeroom) minimal_access = list(access_mining, access_mining_station, access_mailsorting, access_mineral_storeroom) -/datum/job/mining/equip_items(mob/living/carbon/human/H) - 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/clothing/shoes/sneakers/black(H), slot_shoes) +/datum/outfit/job/miner + name = "Shaft Miner" - 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) - H.equip_to_slot_or_del(new /obj/item/weapon/mining_voucher(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/pill/patch/styptic(H), slot_l_store) + belt = /obj/item/device/pda/shaftminer + ears = /obj/item/device/radio/headset/headset_cargo + uniform = /obj/item/clothing/under/rank/miner + l_pocket = /obj/item/weapon/reagent_containers/pill/patch/styptic + backpack_contents = list(/obj/item/weapon/crowbar=1,\ + /obj/item/weapon/storage/bag/ore=1,\ + /obj/item/weapon/mining_voucher=1) + + backpack = /obj/item/weapon/storage/backpack/industrial + satchel = /obj/item/weapon/storage/backpack/satchel_eng + box = /obj/item/weapon/storage/box/engineer /* Bartender @@ -94,21 +102,20 @@ Bartender supervisors = "the head of personnel" selection_color = "#bbe291" - default_pda = /obj/item/device/pda/bar - default_headset = /obj/item/device/radio/headset/headset_srv + outfit = /datum/outfit/job/bartender access = list(access_hydroponics, access_bar, access_kitchen, access_morgue, access_weapons) minimal_access = list(access_bar) -/datum/job/bartender/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - 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/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/ammo_casing/shotgun/beanbag(H), slot_in_backpack) +/datum/outfit/job/bartender + name = "Bartender" + + belt = /obj/item/device/pda/bar + ears = /obj/item/device/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/bartender + suit = /obj/item/clothing/suit/armor/vest + backpack_contents = list(/obj/item/ammo_casing/shotgun/beanbag=4) /* Cook @@ -123,26 +130,30 @@ Cook spawn_positions = 1 supervisors = "the head of personnel" selection_color = "#bbe291" - var/global/cooks = 0 //Counts cooks amount + var/cooks = 0 //Counts cooks amount - default_pda = /obj/item/device/pda/cook - default_headset = /obj/item/device/radio/headset/headset_srv + outfit = /datum/outfit/job/cook access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) minimal_access = list(access_kitchen, access_morgue) -/datum/job/cook/equip_items(mob/living/carbon/human/H) - cooks += 1 +/datum/outfit/job/cook + name = "Cook" + + belt = /obj/item/device/pda/cook + ears = /obj/item/device/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/chef + suit = /obj/item/clothing/suit/toggle/chef + head = /obj/item/clothing/head/chefhat + +/datum/outfit/job/cook/pre_equip(mob/living/carbon/human/H) + ..() + var/datum/job/cook/J = SSjob.GetJob(H.job) + J.cooks++ + if(J.cooks>1)//Cooks + suit = /obj/item/clothing/suit/apron/chef + head = /obj/item/clothing/head/soft/mime - 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/shoes/sneakers/black(H), slot_shoes) - switch(cooks) - if(1) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) - else - H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron/chef(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/soft/mime(H), slot_head) /* Botanist @@ -158,18 +169,21 @@ Botanist supervisors = "the head of personnel" selection_color = "#bbe291" - default_pda = /obj/item/device/pda/botanist - default_headset = /obj/item/device/radio/headset/headset_srv + outfit = /datum/outfit/job/botanist access = list(access_hydroponics, access_bar, access_kitchen, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. minimal_access = list(access_hydroponics, access_morgue) // Removed tox and chem access because STOP PISSING OFF THE CHEMIST GUYS // //Removed medical access because WHAT THE FUCK YOU AREN'T A DOCTOR YOU GROW WHEAT //Given Morgue access because they have a viable means of cloning. -/datum/job/hydro/equip_items(mob/living/carbon/human/H) - 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/sneakers/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/apron(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) +/datum/outfit/job/botanist + name = "Botanist" + + belt = /obj/item/device/pda/botanist + ears = /obj/item/device/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/hydroponics + suit = /obj/item/clothing/suit/apron + gloves =/obj/item/clothing/gloves/botanic_leather + suit_store = /obj/item/device/analyzer/plant_analyzer + /* Janitor @@ -186,12 +200,14 @@ Janitor selection_color = "#bbe291" var/global/janitors = 0 - default_pda = /obj/item/device/pda/janitor - default_headset = /obj/item/device/radio/headset/headset_srv + outfit = /datum/outfit/job/janitor access = list(access_janitor, access_maint_tunnels) minimal_access = list(access_janitor, access_maint_tunnels) -/datum/job/janitor/equip_items(mob/living/carbon/human/H) - 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/sneakers/black(H), slot_shoes) +/datum/outfit/job/janitor + name = "Janitor" + + belt = /obj/item/device/pda/janitor + ears = /obj/item/device/radio/headset/headset_srv + uniform = /obj/item/clothing/under/rank/janitor \ No newline at end of file diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 01ab44ea8a1..c034b5696e5 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -12,25 +12,32 @@ Clown supervisors = "the head of personnel" selection_color = "#dddddd" - default_pda = /obj/item/device/pda/clown - default_backpack = /obj/item/weapon/storage/backpack/clown - default_satchel = /obj/item/weapon/storage/backpack/clown + outfit = /datum/outfit/job/clown access = list(access_theatre) minimal_access = list(access_theatre) -/datum/job/clown/equip_items(mob/living/carbon/human/H) - H.fully_replace_character_name(H.real_name, pick(clown_names)) // Give him a temporary random name to prevent identity revealing +/datum/outfit/job/clown + name = "Clown" - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/clown(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/clown_shoes(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/clown_hat(H), slot_wear_mask) - H.equip_to_slot_or_del(new /obj/item/weapon/bikehorn(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/toy/crayon/rainbow(H), slot_r_store) + belt = /obj/item/device/pda/clown + uniform = /obj/item/clothing/under/rank/clown + shoes = /obj/item/clothing/shoes/clown_shoes + mask = /obj/item/clothing/mask/gas/clown_hat + l_pocket = /obj/item/weapon/bikehorn + r_pocket = /obj/item/toy/crayon/rainbow + backpack_contents = list(/obj/item/weapon/stamp/clown=1,/obj/item/weapon/reagent_containers/spray/waterflower=1) - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H, 50), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/stamp/clown(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/spray/waterflower(H), slot_in_backpack) + backpack = /obj/item/weapon/storage/backpack/clown + satchel = /obj/item/weapon/storage/backpack/clown + +/datum/outfit/job/clown/pre_equip(mob/living/carbon/human/H) + ..() + H.fully_replace_character_name(H.real_name, pick(clown_names)) + +/datum/outfit/job/clown/post_equip(mob/living/carbon/human/H) + ..() + new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(H.back, 50) H.dna.add_mutation(CLOWNMUT) H.rename_self("clown") @@ -49,24 +56,30 @@ Mime supervisors = "the head of personnel" selection_color = "#dddddd" - default_pda = /obj/item/device/pda/mime - default_backpack = /obj/item/weapon/storage/backpack/mime - default_satchel = /obj/item/weapon/storage/backpack/mime + outfit = /datum/outfit/job/mime access = list(access_theatre) minimal_access = list(access_theatre) -/datum/job/mime/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/mime(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/white(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/mime(H), slot_wear_mask) - H.equip_to_slot_or_del(new /obj/item/clothing/head/beret(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/suspenders(H), slot_wear_suit) +/datum/outfit/job/mime + name = "Mime" - H.equip_to_slot_or_del(new /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/toy/crayon/mime(H), slot_in_backpack) + belt = /obj/item/device/pda/mime + uniform = /obj/item/clothing/under/rank/mime + mask = /obj/item/clothing/mask/gas/mime + gloves = /obj/item/clothing/gloves/color/white + head = /obj/item/clothing/head/beret + suit = /obj/item/clothing/suit/suspenders + l_pocket = /obj/item/weapon/bikehorn + r_pocket = /obj/item/toy/crayon/rainbow + backpack_contents = list(/obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing=1,\ + /obj/item/toy/crayon/mime=1) + backpack = /obj/item/weapon/storage/backpack/mime + satchel = /obj/item/weapon/storage/backpack/mime + +/datum/outfit/job/mime/post_equip(mob/living/carbon/human/H) + ..() if(H.mind) H.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/mime_wall(null)) H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/mime/speak(null)) @@ -88,17 +101,19 @@ Librarian supervisors = "the head of personnel" selection_color = "#dddddd" - default_pda = /obj/item/device/pda/librarian + outfit = /datum/outfit/job/librarian access = list(access_library) minimal_access = list(access_library) -/datum/job/librarian/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/librarian(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/bag/books(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_r_store) - H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) +/datum/outfit/job/librarian + name = "Librarian" + + belt = /obj/item/device/pda/librarian + uniform = /obj/item/clothing/under/rank/librarian + l_hand = /obj/item/weapon/storage/bag/books + r_pocket = /obj/item/weapon/barcodescanner + l_pocket = /obj/item/device/laser_pointer /* Lawyer @@ -113,25 +128,28 @@ Lawyer spawn_positions = 2 supervisors = "the head of personnel" selection_color = "#dddddd" - var/global/lawyers = 0 //Counts lawyer amount + var/lawyers = 0 //Counts lawyer amount - default_pda = /obj/item/device/pda/lawyer - default_headset = /obj/item/device/radio/headset/headset_sec + outfit = /datum/outfit/job/lawyer access = list(access_lawyer, access_court, access_sec_doors) minimal_access = list(access_lawyer, access_court, access_sec_doors) -/datum/job/lawyer/equip_items(mob/living/carbon/human/H) - lawyers += 1 +/datum/outfit/job/lawyer + name = "Lawyer" - switch(lawyers) - if(1) - H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/bluesuit(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/lawyer(H), slot_wear_suit) - else - H.equip_to_slot_or_del(new /obj/item/clothing/under/lawyer/purpsuit(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/lawyer/purple(H), slot_wear_suit) + belt = /obj/item/device/pda/lawyer + ears = /obj/item/device/radio/headset/headset_sec + uniform = /obj/item/clothing/under/lawyer/bluesuit + suit = /obj/item/clothing/suit/toggle/lawyer + shoes = /obj/item/clothing/shoes/laceup + l_hand = /obj/item/weapon/storage/briefcase + l_pocket = /obj/item/device/laser_pointer - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) +/datum/outfit/job/lawyer/pre_equip(mob/living/carbon/human/H) + ..() + var/datum/job/lawyer/J = SSjob.GetJob(H.job) + J.lawyers++ + if(J.lawyers>1) + uniform = /obj/item/clothing/under/lawyer/purpsuit + suit = /obj/item/clothing/suit/toggle/lawyer/purple \ 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 87ffe8f8b19..261193a8563 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -13,14 +13,19 @@ Chaplain supervisors = "the head of personnel" selection_color = "#dddddd" - default_pda = /obj/item/device/pda/chaplain + outfit = /datum/outfit/job/chaplain access = list(access_morgue, access_chapel_office, access_crematorium) minimal_access = list(access_morgue, access_chapel_office, access_crematorium) -/datum/job/chaplain/equip_items(mob/living/carbon/human/H) - 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/clothing/shoes/sneakers/black(H), slot_shoes) +/datum/outfit/job/chaplain + name = "Chaplain" + + belt = /obj/item/device/pda/chaplain + uniform = /obj/item/clothing/under/rank/chaplain + +/datum/outfit/job/chaplain/post_equip(mob/living/carbon/human/H) + ..() var/obj/item/weapon/storage/book/bible/B = new /obj/item/weapon/storage/book/bible/booze(H) var/new_religion = "Christianity" diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index 1d7961293cf..a984e5f2147 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -14,13 +14,7 @@ Chief Engineer req_admin_notify = 1 minimal_player_age = 7 - default_id = /obj/item/weapon/card/id/silver - default_pda = /obj/item/device/pda/heads/ce - default_pda_slot = slot_l_store - default_headset = /obj/item/device/radio/headset/heads/ce - default_backpack = /obj/item/weapon/storage/backpack/industrial - default_satchel = /obj/item/weapon/storage/backpack/satchel_eng - default_storagebox = /obj/item/weapon/storage/box/engineer + outfit = /datum/outfit/job/ce access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_atmospherics, access_emergency_storage, access_eva, @@ -31,17 +25,27 @@ Chief Engineer access_heads, access_construction, access_sec_doors, access_minisat, access_ce, access_RC_announce, access_keycard_auth, access_tcomsat, access_mineral_storeroom) -/datum/job/chief_engineer/equip_items(mob/living/carbon/human/H) - 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/clothing/shoes/sneakers/brown(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/color/black/ce(H), slot_gloves) +/datum/outfit/job/ce + name = "Chief Engineer" - //Equip telebaton - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + id = /obj/item/weapon/card/id/silver + belt = /obj/item/weapon/storage/belt/utility/full + l_pocket = /obj/item/device/pda/heads/ce + ears = /obj/item/device/radio/headset/heads/ce + uniform = /obj/item/clothing/under/rank/chief_engineer + shoes = /obj/item/clothing/shoes/sneakers/brown + head = /obj/item/clothing/head/hardhat/white + gloves = /obj/item/clothing/gloves/color/black/ce + backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1) - announce_head(H, list("Engineering")) //tell underlings (engineering radio) they have a head + backpack = /obj/item/weapon/storage/backpack/industrial + satchel = /obj/item/weapon/storage/backpack/satchel_eng + box = /obj/item/weapon/storage/box/engineer + pda_slot = slot_l_store + +/datum/outfit/job/ce/post_equip(mob/living/carbon/human/H) + ..() + announce_head(H, list("Engineering")) /* Station Engineer @@ -57,24 +61,28 @@ Station Engineer supervisors = "the chief engineer" selection_color = "#fff5cc" - default_pda = /obj/item/device/pda/engineering - default_pda_slot = slot_l_store - default_headset = /obj/item/device/radio/headset/headset_eng - default_backpack = /obj/item/weapon/storage/backpack/industrial - default_satchel = /obj/item/weapon/storage/backpack/satchel_eng - default_storagebox = /obj/item/weapon/storage/box/engineer + outfit = /datum/outfit/job/engineer access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics, access_tcomsat) minimal_access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_tcomsat) -/datum/job/engineer/equip_items(mob/living/carbon/human/H) - 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/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) +/datum/outfit/job/engineer + name = "Station Engineer" + + belt = /obj/item/weapon/storage/belt/utility/full + l_pocket = /obj/item/device/pda/engineering + ears = /obj/item/device/radio/headset/headset_eng + uniform = /obj/item/clothing/under/rank/engineer + shoes = /obj/item/clothing/shoes/workboots + head = /obj/item/clothing/head/hardhat + r_pocket = /obj/item/device/t_scanner + + backpack = /obj/item/weapon/storage/backpack/industrial + satchel = /obj/item/weapon/storage/backpack/satchel_eng + box = /obj/item/weapon/storage/box/engineer + pda_slot = slot_l_store /* Atmospheric Technician @@ -90,17 +98,20 @@ Atmospheric Technician supervisors = "the chief engineer" selection_color = "#fff5cc" - default_pda = /obj/item/device/pda/atmos - default_pda_slot = slot_l_store - default_headset = /obj/item/device/radio/headset/headset_eng - default_storagebox = /obj/item/weapon/storage/box/engineer + outfit = /datum/outfit/job/atmos access = list(access_engine, access_engine_equip, access_tech_storage, access_maint_tunnels, access_external_airlocks, access_construction, access_atmospherics) minimal_access = list(access_atmospherics, access_maint_tunnels, access_emergency_storage, access_construction) -/datum/job/atmos/equip_items(mob/living/carbon/human/H) - 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/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/device/analyzer(H), slot_r_store) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/atmostech/(H), slot_belt) \ No newline at end of file +/datum/outfit/job/atmos + name = "Atmospheric Technician" + + belt = /obj/item/weapon/storage/belt/utility/atmostech + l_pocket = /obj/item/device/pda/atmos + ears = /obj/item/device/radio/headset/headset_eng + uniform = /obj/item/clothing/under/rank/atmospheric_technician + r_pocket = /obj/item/device/t_scanner + + box = /obj/item/weapon/storage/box/engineer + pda_slot = slot_l_store \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index c688e4a4303..6ed57ced1d4 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -39,63 +39,26 @@ //If you have the use_age_restriction_for_jobs config option enabled and the database set up, this option will add a requirement for players to be at least minimal_player_age days old. (meaning they first signed in at least that many days before.) var/minimal_player_age = 0 - //Job specific items - var/default_id = /obj/item/weapon/card/id //this is just the looks of it - var/default_pda = /obj/item/device/pda - var/default_pda_slot = slot_belt - var/default_headset = /obj/item/device/radio/headset - var/default_backpack = /obj/item/weapon/storage/backpack - var/default_satchel = /obj/item/weapon/storage/backpack/satchel_norm - var/default_storagebox= /obj/item/weapon/storage/box/survival + var/outfit = null //Only override this proc /datum/job/proc/equip_items(mob/living/carbon/human/H) -//Or this proc -/datum/job/proc/equip_backpack(mob/living/carbon/human/H) - var/obj/item/weapon/storage/backpack/BPK - if(H.backbag == 1) //Backpack - BPK = new default_backpack(H) - else //Satchel - BPK = new default_satchel(H) - new default_storagebox(BPK) - H.equip_to_slot_or_del(BPK, slot_back,1) - //But don't override this /datum/job/proc/equip(mob/living/carbon/human/H) if(!H) return 0 - //Equip backpack - equip_backpack(H) - //Equip the rest of the gear if(H.dna) H.dna.species.before_equip_job(src, H) - equip_items(H) + if(outfit) + H.equipOutfit(outfit) if(H.dna) H.dna.species.after_equip_job(src, H) - //Equip ID - var/obj/item/weapon/card/id/C = new default_id(H) - C.access = get_access() - C.registered_name = H.real_name - C.assignment = H.job - C.update_label() - H.equip_to_slot_or_del(C, slot_wear_id) - - //Equip PDA - var/obj/item/device/pda/PDA = new default_pda(H) - PDA.owner = H.real_name - PDA.ownjob = H.job - PDA.update_label() - H.equip_to_slot_or_del(PDA, default_pda_slot) - - //Equip headset - H.equip_to_slot_or_del(new src.default_headset(H), slot_ears) - /datum/job/proc/apply_fingerprints(mob/living/carbon/human/H) if(!istype(H)) return @@ -169,8 +132,45 @@ /datum/job/proc/config_check() return 1 -/datum/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. +/datum/outfit/job + name = "Standard Gear" + + uniform = /obj/item/clothing/under/color/grey + id = /obj/item/weapon/card/id + ears = /obj/item/device/radio/headset + belt = /obj/item/device/pda + back = /obj/item/weapon/storage/backpack + shoes = /obj/item/clothing/shoes/sneakers/black + + var/backpack = /obj/item/weapon/storage/backpack + var/satchel = /obj/item/weapon/storage/backpack/satchel_norm + var/box = /obj/item/weapon/storage/box/survival + + var/pda_slot = slot_belt + +/datum/outfit/job/pre_equip(mob/living/carbon/human/H) + if(H.backbag == 1) //Backpack + back = backpack + else //Satchel + back = satchel + + backpack_contents[box] = 1 + +/datum/outfit/job/post_equip(mob/living/carbon/human/H) + var/obj/item/weapon/card/id/C = H.wear_id + var/datum/job/J = SSjob.GetJob(H.job) // Not sure the best idea + C.access = J.get_access() + C.registered_name = H.real_name + C.assignment = H.job + C.update_label() + + var/obj/item/device/pda/PDA = H.get_item_by_slot(pda_slot) + PDA.owner = H.real_name + PDA.ownjob = H.job + PDA.update_label() + +/datum/outfit/job/proc/announce_head(var/mob/living/carbon/human/H, var/channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels. spawn(4) //to allow some initialization if(announcement_systems.len) var/obj/machinery/announcement_system/announcer = pick(announcement_systems) - announcer.announce("NEWHEAD", H.real_name, H.job, channels) \ No newline at end of file + announcer.announce("NEWHEAD", H.real_name, H.job, channels) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 6943b3e27eb..4566d4fb2a7 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -14,11 +14,7 @@ Chief Medical Officer req_admin_notify = 1 minimal_player_age = 7 - default_id = /obj/item/weapon/card/id/silver - default_pda = /obj/item/device/pda/heads/cmo - default_headset = /obj/item/device/radio/headset/heads/cmo - default_backpack = /obj/item/weapon/storage/backpack/medic - default_satchel = /obj/item/weapon/storage/backpack/satchel_med + outfit = /datum/outfit/job/cmo access = list(access_medical, access_morgue, access_genetics, access_heads, access_mineral_storeroom, access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, @@ -27,14 +23,24 @@ Chief Medical Officer access_chemistry, access_virology, access_cmo, access_surgery, access_RC_announce, access_keycard_auth, access_sec_doors) -/datum/job/cmo/equip_items(mob/living/carbon/human/H) - 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/sneakers/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/cmo(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) +/datum/outfit/job/cmo + name = "Chief Medical Officer" + id = /obj/item/weapon/card/id/silver + belt = /obj/item/device/pda/heads/cmo + ears = /obj/item/device/radio/headset/heads/cmo + uniform = /obj/item/clothing/under/rank/chief_medical_officer + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat/cmo + l_hand = /obj/item/weapon/storage/firstaid/regular + suit_store = /obj/item/device/flashlight/pen + backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1) + + backpack = /obj/item/weapon/storage/backpack/medic + satchel = /obj/item/weapon/storage/backpack/satchel_med + +/datum/outfit/job/cmo/post_equip(mob/living/carbon/human/H) + ..() announce_head(H, list("Medical")) //tell underlings (medical radio) they have a head /* @@ -51,20 +57,24 @@ Medical Doctor supervisors = "the chief medical officer" selection_color = "#ffeef0" - default_pda = /obj/item/device/pda/medical - default_headset = /obj/item/device/radio/headset/headset_med - default_backpack = /obj/item/weapon/storage/backpack/medic - default_satchel = /obj/item/weapon/storage/backpack/satchel_med + outfit = /datum/outfit/job/doctor access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_morgue, access_surgery) -/datum/job/doctor/equip_items(mob/living/carbon/human/H) - 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/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/firstaid/regular(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) +/datum/outfit/job/doctor + name = "Medical Doctor" + + belt = /obj/item/device/pda/medical + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/medical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/weapon/storage/firstaid/regular + suit_store = /obj/item/device/flashlight/pen + + backpack = /obj/item/weapon/storage/backpack/medic + satchel = /obj/item/weapon/storage/backpack/satchel_med /* Chemist @@ -80,16 +90,19 @@ Chemist supervisors = "the chief medical officer" selection_color = "#ffeef0" - default_pda = /obj/item/device/pda/chemist - default_headset = /obj/item/device/radio/headset/headset_med + outfit = /datum/outfit/job/chemist access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_chemistry, access_mineral_storeroom) -/datum/job/chemist/equip_items(mob/living/carbon/human/H) - 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/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/chemist(H), slot_wear_suit) +/datum/outfit/job/chemist + name = "Chemist" + + belt = /obj/item/device/pda/chemist + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/chemist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/chemist /* Geneticist @@ -105,17 +118,20 @@ Geneticist supervisors = "the chief medical officer and research director" selection_color = "#ffeef0" - default_pda = /obj/item/device/pda/geneticist - default_headset = /obj/item/device/radio/headset/headset_medsci + outfit = /datum/outfit/job/geneticist access = list(access_medical, access_morgue, access_chemistry, access_virology, access_genetics, access_research, access_xenobiology, access_robotics, access_mineral_storeroom, access_tech_storage) minimal_access = list(access_medical, access_morgue, access_genetics, access_research) -/datum/job/geneticist/equip_items(mob/living/carbon/human/H) - 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/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/genetics(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) +/datum/outfit/job/geneticist + name = "Geneticist" + + belt = /obj/item/device/pda/geneticist + ears = /obj/item/device/radio/headset/headset_medsci + uniform = /obj/item/clothing/under/rank/geneticist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/genetics + suit_store = /obj/item/device/flashlight/pen /* Virologist @@ -131,18 +147,21 @@ Virologist supervisors = "the chief medical officer" selection_color = "#ffeef0" - default_pda = /obj/item/device/pda/viro - default_headset = /obj/item/device/radio/headset/headset_med - default_backpack = /obj/item/weapon/storage/backpack/medic - default_satchel = /obj/item/weapon/storage/backpack/satchel_med + outfit = /datum/outfit/job/virologist access = list(access_medical, access_morgue, access_surgery, access_chemistry, access_virology, access_genetics, access_mineral_storeroom) minimal_access = list(access_medical, access_virology, access_mineral_storeroom) -/datum/job/virologist/equip_items(mob/living/carbon/human/H) - 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/mask/surgical(H), slot_wear_mask) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/virologist(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) +/datum/outfit/job/virologist + name = "Virologist" + belt = /obj/item/device/pda/viro + ears = /obj/item/device/radio/headset/headset_med + uniform = /obj/item/clothing/under/rank/virologist + mask = /obj/item/clothing/mask/surgical + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/virologist + suit_store = /obj/item/device/flashlight/pen + + backpack = /obj/item/weapon/storage/backpack/medic + satchel = /obj/item/weapon/storage/backpack/satchel_med \ No newline at end of file diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index f6b4c365bb8..2fc9385d45c 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -14,9 +14,7 @@ Research Director req_admin_notify = 1 minimal_player_age = 7 - default_id = /obj/item/weapon/card/id/silver - default_pda = /obj/item/device/pda/heads/rd - default_headset = /obj/item/device/radio/headset/heads/rd + outfit = /datum/outfit/job/rd access = list(access_rd, access_heads, access_tox, access_genetics, access_morgue, access_tox_storage, access_teleporter, access_sec_doors, @@ -29,14 +27,24 @@ Research Director access_RC_announce, access_keycard_auth, access_gateway, access_mineral_storeroom, access_tech_storage, access_minisat) -/datum/job/rd/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/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/clothing/suit/toggle/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) - H.equip_to_slot_or_del(new /obj/item/device/laser_pointer(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) +/datum/outfit/job/rd + name = "Research Director" + id = /obj/item/weapon/card/id/silver + belt = /obj/item/device/pda/heads/rd + ears = /obj/item/device/radio/headset/heads/rd + uniform = /obj/item/clothing/under/rank/research_director + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/toggle/labcoat + l_hand = /obj/item/weapon/clipboard + l_pocket = /obj/item/device/laser_pointer + backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1) + + backpack = /obj/item/weapon/storage/backpack/medic + satchel = /obj/item/weapon/storage/backpack/satchel_med + +/datum/outfit/job/rd/post_equip(mob/living/carbon/human/H) + ..() announce_head(H, list("Science")) //tell underlings (science radio) they have a head /* @@ -53,16 +61,19 @@ Scientist supervisors = "the research director" selection_color = "#ffeeff" - default_pda = /obj/item/device/pda/toxins - default_headset = /obj/item/device/radio/headset/headset_sci + outfit = /datum/outfit/job/scientist access = list(access_robotics, access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom, access_tech_storage, access_genetics) minimal_access = list(access_tox, access_tox_storage, access_research, access_xenobiology, access_mineral_storeroom) -/datum/job/scientist/equip_items(mob/living/carbon/human/H) - 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/sneakers/white(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat/science(H), slot_wear_suit) +/datum/outfit/job/scientist + name = "Scientist" + + belt = /obj/item/device/pda/toxins + ears = /obj/item/device/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/scientist + shoes = /obj/item/clothing/shoes/sneakers/white + suit = /obj/item/clothing/suit/toggle/labcoat/science /* Roboticist @@ -78,15 +89,18 @@ Roboticist supervisors = "research director" selection_color = "#ffeeff" - default_pda = /obj/item/device/pda/roboticist - default_headset = /obj/item/device/radio/headset/headset_sci - default_pda_slot = slot_l_store + outfit = /datum/outfit/job/roboticist access = list(access_robotics, access_tox, access_tox_storage, access_tech_storage, access_morgue, access_research, access_mineral_storeroom, access_xenobiology, access_genetics) minimal_access = list(access_robotics, access_tech_storage, access_morgue, access_research, access_mineral_storeroom) -/datum/job/roboticist/equip_items(mob/living/carbon/human/H) - 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/sneakers/black(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/toggle/labcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) \ No newline at end of file +/datum/outfit/job/roboticist + name = "Roboticist" + + belt = /obj/item/weapon/storage/belt/utility/full + l_pocket = /obj/item/device/pda/roboticist + ears = /obj/item/device/radio/headset/headset_sci + uniform = /obj/item/clothing/under/rank/roboticist + suit = /obj/item/clothing/suit/toggle/labcoat + + pda_slot = slot_l_store \ No newline at end of file diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 24e2af7988c..f98d0578dcc 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -20,11 +20,7 @@ Head of Security req_admin_notify = 1 minimal_player_age = 14 - default_id = /obj/item/weapon/card/id/silver - default_pda = /obj/item/device/pda/heads/hos - default_headset = /obj/item/device/radio/headset/heads/hos/alt - default_backpack = /obj/item/weapon/storage/backpack/security - default_satchel = /obj/item/weapon/storage/backpack/satchel_sec + outfit = /datum/outfit/job/hos access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_weapons, access_forensics_lockers, access_morgue, access_maint_tunnels, access_all_personal_lockers, @@ -35,25 +31,33 @@ Head of Security access_research, access_engine, access_mining, access_medical, access_construction, access_mailsorting, access_heads, access_hos, access_RC_announce, access_keycard_auth, access_gateway) -/datum/job/hos/equip_items(mob/living/carbon/human/H) - 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/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/hos/trenchcoat(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black/hos(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/head/HoS/beret(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun(H), slot_s_store) +/datum/outfit/job/hos + name = "Head of Security" - H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) + id = /obj/item/weapon/card/id/silver + belt = /obj/item/device/pda/heads/hos + ears = /obj/item/device/radio/headset/heads/hos/alt + uniform = /obj/item/clothing/under/rank/head_of_security + shoes = /obj/item/clothing/shoes/jackboots + suit = /obj/item/clothing/suit/armor/hos/trenchcoat + gloves = /obj/item/clothing/gloves/color/black/hos + head = /obj/item/clothing/head/HoS/beret + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + suit_store = /obj/item/weapon/gun/energy/gun + backpack_contents = list(/obj/item/weapon/melee/classic_baton/telescopic=1,\ + /obj/item/weapon/restraints/handcuffs=1) + backpack = /obj/item/weapon/storage/backpack/security + satchel = /obj/item/weapon/storage/backpack/satchel_sec + +/datum/outfit/job/hos/post_equip(mob/living/carbon/human/H) + ..() var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() announce_head(H, list("Security")) //tell underlings (security radio) they have a head - /* Warden */ @@ -69,36 +73,41 @@ Warden selection_color = "#ffeeee" minimal_player_age = 7 - default_pda = /obj/item/device/pda/warden - default_headset = /obj/item/device/radio/headset/headset_sec/alt - default_backpack = /obj/item/weapon/storage/backpack/security - default_satchel = /obj/item/weapon/storage/backpack/satchel_sec + outfit = /datum/outfit/job/warden access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) minimal_access = list(access_security, access_sec_doors, access_brig, access_armory, access_court, access_weapons) //See /datum/job/warden/get_access() -/datum/job/warden/equip_items(mob/living/carbon/human/H) - 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/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest/warden(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/warden(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/security/sunglasses(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/device/assembly/flash/handheld(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store) - - H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack) - - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) - L.imp_in = H - L.implanted = 1 - H.sec_hud_set_implants() - /datum/job/warden/get_access() var/list/L = list() L = ..() | check_config_for_sec_maint() return L +/datum/outfit/job/warden + name = "Warden" + + belt = /obj/item/device/pda/warden + ears = /obj/item/device/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/warden + shoes = /obj/item/clothing/shoes/jackboots + suit = /obj/item/clothing/suit/armor/vest/warden + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/warden + glasses = /obj/item/clothing/glasses/hud/security/sunglasses + l_pocket = /obj/item/device/assembly/flash/handheld + suit_store = /obj/item/weapon/gun/energy/gun/advtaser + backpack_contents = list(/obj/item/weapon/restraints/handcuffs=1) + + backpack = /obj/item/weapon/storage/backpack/security + satchel = /obj/item/weapon/storage/backpack/satchel_sec + +/datum/outfit/job/warden/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + H.sec_hud_set_implants() + /* Detective */ @@ -114,28 +123,32 @@ Detective selection_color = "#ffeeee" minimal_player_age = 7 - default_pda = /obj/item/device/pda/detective - default_headset = /obj/item/device/radio/headset/headset_sec + outfit = /datum/outfit/job/detective access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_weapons, access_brig, access_security) minimal_access = list(access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court, access_weapons) -/datum/job/detective/equip_items(mob/living/carbon/human/H) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/det(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/head/det_hat(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/det_suit(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/toy/crayon/white(H), slot_l_store) - H.equip_to_slot_or_del(new /obj/item/weapon/lighter(H), slot_r_store) +/datum/outfit/job/detective + name = "Detective" - var/obj/item/clothing/mask/cigarette/cig = new /obj/item/clothing/mask/cigarette(H) + belt = /obj/item/device/pda/detective + ears = /obj/item/device/radio/headset/headset_sec + uniform = /obj/item/clothing/under/rank/det + shoes = /obj/item/clothing/shoes/sneakers/brown + suit = /obj/item/clothing/suit/det_suit + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/det_hat + l_pocket = /obj/item/toy/crayon/white + r_pocket = /obj/item/weapon/lighter + backpack_contents = list(/obj/item/weapon/storage/box/evidence=1,\ + /obj/item/device/detective_scanner=1,\ + /obj/item/weapon/melee/classic_baton/telescopic=1) + mask = /obj/item/clothing/mask/cigarette + +/datum/outfit/job/detective/post_equip(mob/living/carbon/human/H) + ..() + var/obj/item/clothing/mask/cigarette/cig = H.wear_mask cig.light("") - H.equip_to_slot_or_del(cig, slot_wear_mask) - - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/classic_baton/telescopic(H), slot_in_backpack) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H @@ -156,102 +169,108 @@ Security Officer supervisors = "the head of security, and the head of your assigned department (if applicable)" selection_color = "#ffeeee" minimal_player_age = 7 - var/list/dep_access = null - default_pda = /obj/item/device/pda/security - default_headset = /obj/item/device/radio/headset/headset_sec/alt - default_backpack = /obj/item/weapon/storage/backpack/security - default_satchel = /obj/item/weapon/storage/backpack/satchel_sec - default_storagebox = /obj/item/weapon/storage/box/security + outfit = /datum/outfit/job/security access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_weapons, access_forensics_lockers) minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_weapons) //But see /datum/job/warden/get_access() -/datum/job/officer/equip_items(mob/living/carbon/human/H) - assign_sec_to_department(H) +/datum/job/officer/get_access() + var/list/L = list() + L |= ..() | check_config_for_sec_maint() + return L - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/jackboots(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/armor/vest(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/sec(H), slot_head) - H.equip_to_slot_or_del(new /obj/item/clothing/gloves/color/black(H), slot_gloves) - H.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/gun/advtaser(H), slot_s_store) - H.equip_to_slot_or_del(new /obj/item/device/assembly/flash/handheld(H), slot_l_store) +var/list/sec_departments = list("engineering", "supply", "medical", "science") - H.equip_to_slot_or_del(new /obj/item/weapon/restraints/handcuffs(H), slot_in_backpack) - H.equip_to_slot_or_del(new /obj/item/weapon/melee/baton/loaded(H), slot_in_backpack) +/datum/outfit/job/security + name = "Security Officer" + + belt = /obj/item/device/pda/security + ears = /obj/item/device/radio/headset/headset_sec/alt + uniform = /obj/item/clothing/under/rank/security + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/helmet/sec + suit = /obj/item/clothing/suit/armor/vest + shoes = /obj/item/clothing/shoes/jackboots + l_pocket = /obj/item/device/assembly/flash/handheld + suit_store = /obj/item/weapon/gun/energy/gun/advtaser + backpack_contents = list(/obj/item/weapon/restraints/handcuffs=1,\ + /obj/item/weapon/melee/baton/loaded=1) + + backpack = /obj/item/weapon/storage/backpack/security + satchel = /obj/item/weapon/storage/backpack/satchel_sec + box = /obj/item/weapon/storage/box/security + + var/department = null + var/tie = null + var/list/dep_access = null + var/destination = null + var/spawn_point = null + +/datum/outfit/job/security/pre_equip(mob/living/carbon/human/H) + ..() + if(sec_departments.len) + department = pick(sec_departments) + sec_departments -= department + switch(department) + if("supply") + ears = /obj/item/device/radio/headset/headset_sec/alt/department/supply + dep_access = list(access_mailsorting, access_mining) + destination = /area/security/checkpoint/supply + spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in department_security_spawns + tie = /obj/item/clothing/tie/armband/cargo + if("engineering") + ears = /obj/item/device/radio/headset/headset_sec/alt/department/engi + dep_access = list(access_construction, access_engine) + destination = /area/security/checkpoint/engineering + spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in department_security_spawns + tie = /obj/item/clothing/tie/armband/engine + if("medical") + ears = /obj/item/device/radio/headset/headset_sec/alt/department/med + dep_access = list(access_medical) + destination = /area/security/checkpoint/medical + spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in department_security_spawns + tie = /obj/item/clothing/tie/armband/medblue + if("science") + ears = /obj/item/device/radio/headset/headset_sec/alt/department/sci + dep_access = list(access_research) + destination = /area/security/checkpoint/science + spawn_point = locate(/obj/effect/landmark/start/depsec/science) in department_security_spawns + tie = /obj/item/clothing/tie/armband/science + +/datum/outfit/job/security/post_equip(mob/living/carbon/human/H) + ..() var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) L.imp_in = H L.implanted = 1 H.sec_hud_set_implants() -/datum/job/officer/get_access() - var/list/L = list() - if(dep_access) - L |= dep_access.Copy() - L |= ..() | check_config_for_sec_maint() - dep_access = null; - return L + var/obj/item/clothing/under/U = H.w_uniform + U.attachTie(new tie) -var/list/sec_departments = list("engineering", "supply", "medical", "science") + var/obj/item/weapon/card/id/W = H.wear_id + W.access |= dep_access -/datum/job/officer/proc/assign_sec_to_department(mob/living/carbon/human/H) - if(!sec_departments.len) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security(H), slot_w_uniform) - else - var/department = pick(sec_departments) - sec_departments -= department - var/destination = null - var/obj/effect/landmark/start/depsec/spawn_point = null - var/obj/item/clothing/under/U = new /obj/item/clothing/under/rank/security(H) - - switch(department) - if("supply") - default_headset = /obj/item/device/radio/headset/headset_sec/alt/department/supply - dep_access = list(access_mailsorting, access_mining) - destination = /area/security/checkpoint/supply - spawn_point = locate(/obj/effect/landmark/start/depsec/supply) in department_security_spawns - U.attachTie(new /obj/item/clothing/tie/armband/cargo()) - if("engineering") - default_headset = /obj/item/device/radio/headset/headset_sec/alt/department/engi - dep_access = list(access_construction, access_engine) - destination = /area/security/checkpoint/engineering - spawn_point = locate(/obj/effect/landmark/start/depsec/engineering) in department_security_spawns - U.attachTie(new /obj/item/clothing/tie/armband/engine()) - if("medical") - default_headset = /obj/item/device/radio/headset/headset_sec/alt/department/med - dep_access = list(access_medical) - destination = /area/security/checkpoint/medical - spawn_point = locate(/obj/effect/landmark/start/depsec/medical) in department_security_spawns - U.attachTie(new /obj/item/clothing/tie/armband/medblue()) - if("science") - default_headset = /obj/item/device/radio/headset/headset_sec/alt/department/sci - dep_access = list(access_research) - destination = /area/security/checkpoint/science - spawn_point = locate(/obj/effect/landmark/start/depsec/science) in department_security_spawns - U.attachTie(new /obj/item/clothing/tie/armband/science()) - - H.equip_to_slot_or_del(U, slot_w_uniform) - var/teleport = 0 - if(!config.sec_start_brig) - if(destination || spawn_point) - teleport = 1 - if(teleport) - var/turf/T - if(spawn_point) - T = get_turf(spawn_point) - H.Move(T) - else - var/safety = 0 - while(safety < 25) - T = safepick(get_area_turfs(destination)) - if(T && !H.Move(T)) - safety += 1 - continue - else - break - H << "You have been assigned to [department]!" - return + var/teleport = 0 + if(!config.sec_start_brig) + if(destination || spawn_point) + teleport = 1 + if(teleport) + var/turf/T + if(spawn_point) + T = get_turf(spawn_point) + H.Move(T) + else + var/safety = 0 + while(safety < 25) + T = safepick(get_area_turfs(destination)) + if(T && !H.Move(T)) + safety += 1 + continue + else + break + H << "You have been assigned to [department]!" /obj/item/device/radio/headset/headset_sec/department/New() wires = new(src) From c2a26c81e7ecb7b82f16a6aae84fcf7ef8235b28 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 8 Sep 2015 14:41:15 +0200 Subject: [PATCH 4/6] Adds Create Custom Outfit admin verb Sechud fix --- code/datums/outfit.dm | 17 +-- code/game/jobs/job/job.dm | 1 + code/modules/admin/admin_verbs.dm | 3 +- code/modules/admin/topic.dm | 29 +++- code/modules/admin/verbs/debug.dm | 13 +- code/modules/admin/verbs/randomverbs.dm | 178 ++++++++++++++++++++++++ 6 files changed, 222 insertions(+), 19 deletions(-) diff --git a/code/datums/outfit.dm b/code/datums/outfit.dm index 9ee454ce6f0..80da62ee49e 100644 --- a/code/datums/outfit.dm +++ b/code/datums/outfit.dm @@ -72,19 +72,4 @@ post_equip(H) - return 1 -//Example -/datum/outfit/test - name = "Test Outfit" - - uniform = /obj/item/clothing/under/color/grey - suit = /obj/item/clothing/suit/space - shoes = /obj/item/clothing/shoes/sneakers/black - head = /obj/item/clothing/head/helmet/space - back = /obj/item/weapon/storage/backpack - mask = /obj/item/clothing/mask/breath - backpack_contents = list(/obj/item/weapon/c4=5,/obj/item/weapon/kitchen/knife=1) - r_hand = /obj/item/weapon/c4 - -/datum/outfit/test/post_equip(mob/living/carbon/human/H) - H.say("I love bombs!") \ No newline at end of file + return 1 \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 6ed57ced1d4..a7b0ab3ca3b 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -163,6 +163,7 @@ C.registered_name = H.real_name C.assignment = H.job C.update_label() + H.sec_hud_set_ID() var/obj/item/device/pda/PDA = H.get_item_by_slot(pda_slot) PDA.owner = H.real_name diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 82e0c143345..a52769f13f2 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -131,7 +131,8 @@ var/list/admin_verbs_debug = list( /proc/machine_upgrade, /client/proc/populate_world, /client/proc/cmd_display_del_log, - /client/proc/reset_latejoin_spawns + /client/proc/reset_latejoin_spawns, + /client/proc/create_outfits ) var/list/admin_verbs_possess = list( /proc/possess, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 10ef2d85e33..d1275930c8c 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -2109,4 +2109,31 @@ message_admins("[key_name_admin(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") log_admin("[key_name(usr)] has kicked [afkonly ? "all AFK" : "all"] clients from the lobby. [length(listkicked)] clients kicked: [strkicked ? strkicked : "--"]") else - usr << "You may only use this when the game is running" \ No newline at end of file + usr << "You may only use this when the game is running" + + else if(href_list["create_outfit"]) + if(!check_rights(R_ADMIN)) + return + + var/datum/outfit/O = new /datum/outfit + //swap this for js dropdowns sometime + O.name = href_list["outfit_name"] + O.uniform = text2path(href_list["outfit_uniform"]) + O.shoes = text2path(href_list["outfit_shoes"]) + O.gloves = text2path(href_list["outfit_gloves"]) + O.suit = text2path(href_list["outfit_suit"]) + O.head = text2path(href_list["outfit_head"]) + O.back = text2path(href_list["outfit_back"]) + O.mask = text2path(href_list["outfit_mask"]) + O.glasses = text2path(href_list["outfit_glasses"]) + O.r_hand = text2path(href_list["outfit_r_hand"]) + O.l_hand = text2path(href_list["outfit_l_hand"]) + O.suit_store = text2path(href_list["outfit_s_store"]) + O.l_pocket = text2path(href_list["outfit_l_pocket"]) + O.r_pocket = text2path(href_list["outfit_r_pocket"]) + O.id = text2path(href_list["outfit_id"]) + O.belt = text2path(href_list["outfit_belt"]) + O.ears = text2path(href_list["outfit_ears"]) + + custom_outfits.Add(O) + message_admins("[key_name(usr)] created \"[O.name]\" outfit!") \ No newline at end of file diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 1c25137d533..4912c073fbf 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -627,7 +627,7 @@ var/global/list/g_fancy_list_of_types = null var/list/outfits = list("Naked","Custom","As Job...") - var/list/paths = typesof(/datum/outfit) - /datum/outfit + var/list/paths = typesof(/datum/outfit) - /datum/outfit - typesof(/datum/outfit/job) for(var/path in paths) var/datum/outfit/O = path //not much to initalize here but whatever outfits[initial(O.name)] = path @@ -645,6 +645,16 @@ var/global/list/g_fancy_list_of_types = null jobdatum = SSjob.GetJob(jobname) + var/datum/outfit/custom = null + if (dresscode == "Custom") + var/list/custom_names = list() + for(var/datum/outfit/D in custom_outfits) + custom_names[D.name] = D + var/selected_name = input("Select outfit", "Robust quick dress shop") as null|anything in custom_names + custom = custom_names[selected_name] + if(isnull(custom)) + 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)) @@ -655,6 +665,7 @@ var/global/list/g_fancy_list_of_types = null //do nothing if ("Custom") //use custom one + M.equipOutfit(custom) if ("As Job...") if(jobdatum) dresscode = jobdatum.title diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index e886190f079..6b1a1d37eb2 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -758,3 +758,181 @@ Traitors and the like can also be revived with the previous role mostly intact. log_admin("[key_name(usr)] removed latejoin spawnpoints.") message_admins("[key_name_admin(usr)] removed latejoin spawnpoints.") + + + + +var/list/datum/outfit/custom_outfits = list() //Admin created outfits + +/client/proc/create_outfits() + set category = "Debug" + set name = "Create Custom Outfit" + + if(!check_rights(R_DEBUG)) return + + holder.create_outfit() + +/datum/admins/proc/create_outfit() + var/list/uniforms = typesof(/obj/item/clothing/under) + var/list/suits = typesof(/obj/item/clothing/suit) + var/list/gloves = typesof(/obj/item/clothing/gloves) + var/list/shoes = typesof(/obj/item/clothing/shoes) + var/list/headwear = typesof(/obj/item/clothing/head) + var/list/glasses = typesof(/obj/item/clothing/glasses) + var/list/masks = typesof(/obj/item/clothing/mask) + var/list/ids = typesof(/obj/item/weapon/card/id) + + var/uniform_select = "" + + var/suit_select = "" + + var/gloves_select = "" + + var/shoes_select = "" + + var/head_select = "" + + var/glasses_select = "" + + var/mask_select = "" + + var/id_select = "" + + var/dat = {" + Create Outfit +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name: + +
Uniform: + [uniform_select] +
Suit: + [suit_select] +
Back: + +
Belt: + +
Gloves: + [gloves_select] +
Shoes: + [shoes_select] +
Head: + [head_select] +
Mask: + [mask_select] +
Ears: + +
Glasses: + [glasses_select] +
ID: + [id_select] +
Left Pocket: + +
Right Pocket: + +
Suit Store: + +
Right Hand: + +
Left Hand: + +
+
+ +
+ "} + usr << browse(dat, "window=dressup;size=550x600") \ No newline at end of file From 1d9b59e28bc0d1ee1171541f69644a1fc81dc33c Mon Sep 17 00:00:00 2001 From: GunHog Date: Wed, 9 Sep 2015 12:53:00 -0500 Subject: [PATCH 5/6] Fixes missing chem heater board design - Fixes #11673 (deleted a tab) --- code/modules/research/designs/machine_designs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 828192263a2..2d20c8371bf 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -172,7 +172,7 @@ build_path = /obj/item/weapon/circuitboard/chem_heater category = list ("Medical Machinery") - /datum/design/clonecontrol +/datum/design/clonecontrol name = "Computer Design (Cloning Machine Console)" desc = "Allows for the construction of circuit boards used to build a new Cloning Machine console." id = "clonecontrol" From 28889d2b6af6c6f0acd9256ded38f972cdc80dc9 Mon Sep 17 00:00:00 2001 From: xxalpha Date: Fri, 4 Sep 2015 17:37:17 +0100 Subject: [PATCH 6/6] Changed protolathe code to use material container. Clean proc, typo fix Standard sheet values --- code/datums/material_container.dm | 34 ++-- code/game/machinery/autolathe.dm | 2 +- code/game/machinery/recycler.dm | 2 +- code/modules/clothing/shoes/bananashoes.dm | 2 +- code/modules/research/designs.dm | 1 + code/modules/research/experimentor.dm | 4 +- code/modules/research/protolathe.dm | 123 +++------------ code/modules/research/rdconsole.dm | 172 +++++++++------------ 8 files changed, 127 insertions(+), 213 deletions(-) diff --git a/code/datums/material_container.dm b/code/datums/material_container.dm index 56750520095..6870c3d303b 100644 --- a/code/datums/material_container.dm +++ b/code/datums/material_container.dm @@ -48,10 +48,10 @@ if(amt > 0 && has_space(amt)) var/total_amount_saved = total_amount if(material_type) - for(var/datum/material/M in materials) - if(M.material_type == material_type) - M.amount += amt - total_amount += amt + var/datum/material/M = materials[material_type] + if(M) + M.amount += amt + total_amount += amt else for(var/datum/material/M in materials) M.amount += amt @@ -93,21 +93,21 @@ //For consuming material //mats is a list of types of material to use and the corresponding amounts, example: list(MAT_METAL=100, MAT_GLASS=200) -/datum/material_container/proc/use_amount(list/mats) +/datum/material_container/proc/use_amount(list/mats, multiplier=1) if(!mats || !mats.len) return 0 var/datum/material/M for(var/MAT in materials) M = materials[MAT] - if(M.amount < mats[MAT]) + if(M.amount < (mats[MAT] * multiplier)) return 0 var/total_amount_save = total_amount for(var/MAT in materials) M = materials[MAT] - M.amount -= mats[MAT] - total_amount -= mats[MAT] + M.amount -= mats[MAT] * multiplier + total_amount -= mats[MAT] * multiplier return total_amount_save - total_amount @@ -124,7 +124,9 @@ //For spawning mineral sheets; internal use only /datum/material_container/proc/retrieve(sheet_amt, datum/material/M) - if(sheet_amt > 0 && M.amount >= (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + if(sheet_amt > 0) + if(M.amount < (sheet_amt * MINERAL_MATERIAL_AMOUNT)) + sheet_amt = round(M.amount / MINERAL_MATERIAL_AMOUNT) var/count = 0 while(sheet_amt > MAX_STACK_SIZE) @@ -159,6 +161,17 @@ /datum/material_container/proc/has_space(amt = 0) return (total_amount + amt) <= max_amount +/datum/material_container/proc/has_materials(list/mats, multiplier=1) + if(!mats || !mats.len) + return 0 + + var/datum/material/M + for(var/MAT in mats) + M = materials[MAT] + if(M.amount < (mats[MAT] * multiplier)) + return 0 + return 1 + /datum/material_container/proc/amount2sheet(amt) if(amt >= MINERAL_MATERIAL_AMOUNT) return round(amt / MINERAL_MATERIAL_AMOUNT) @@ -173,9 +186,6 @@ var/datum/material/M = materials[material_type] return M ? M.amount : 0 -/datum/material_container/proc/can_insert(obj/item/I) - return get_item_material_amount(I) - //returns the amount of material relevant to this container; //if this container does not support glass, any glass in 'I' will not be taken into account /datum/material_container/proc/get_item_material_amount(obj/item/I) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 7a6a84a443e..e5235f412f4 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -116,7 +116,7 @@ if (stat) return 1 - var/material_amount = materials.can_insert(O) + var/material_amount = materials.get_item_material_amount(O) if(!material_amount) user << "This object does not contain sufficient amounts of metal or glass to be accepted by the autolathe." return 1 diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 60e6cd9f6ed..57fd990d2dd 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -119,7 +119,7 @@ var/const/SAFETY_COOLDOWN = 100 if(sound) playsound(src.loc, 'sound/items/Welder.ogg', 50, 1) - var/material_amount = materials.can_insert(I) + var/material_amount = materials.get_item_material_amount(I) if(!material_amount) qdel(I) return diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 8ecc971b7dd..795490b381f 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -37,7 +37,7 @@ user << "You cannot retrieve any bananium from the prototype shoes." /obj/item/clothing/shoes/clown_shoes/banana_shoes/attackby(obj/item/O, mob/user, params) - if(!bananium.can_insert(O)) + if(!bananium.get_item_material_amount(O)) user << "This item has no bananium!" return if(!user.unEquip(O)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 4f7414e3457..8e117dc0bee 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -40,6 +40,7 @@ other types of metals and chemistry for reagents). var/construction_time //Amount of time required for building the object var/build_path = "" //The file path of the object that gets created var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything + var/reagents //A proc to calculate the reliability of a design based on tech levels and innate modifiers. diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm index 6282be27194..37fe63e90e0 100644 --- a/code/modules/research/experimentor.dm +++ b/code/modules/research/experimentor.dm @@ -456,8 +456,8 @@ visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!") new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src)))) if(linked_console.linked_lathe) - linked_console.linked_lathe.m_amount += min((linked_console.linked_lathe.max_material_storage - linked_console.linked_lathe.TotalMaterials()), (exp_on.materials[MAT_METAL])) - linked_console.linked_lathe.g_amount += min((linked_console.linked_lathe.max_material_storage - linked_console.linked_lathe.TotalMaterials()), (exp_on.materials[MAT_GLASS])) + for(var/material in exp_on.materials) + linked_console.linked_lathe.materials.insert_amount( min((linked_console.linked_lathe.materials.max_amount - linked_console.linked_lathe.materials.total_amount), (exp_on.materials[material])), material) if(prob(EFFECT_PROB_VERYLOW-badThingCoeff)) visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!") playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3) diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm index 0e998a0cb1b..5b2ddee54a0 100644 --- a/code/modules/research/protolathe.dm +++ b/code/modules/research/protolathe.dm @@ -13,16 +13,7 @@ Note: Must be placed west/left of and R&D console to function. icon_state = "protolathe" flags = OPENCONTAINER - var/max_material_storage = 100000 //All this could probably be done better with a list but meh. - var/m_amount = 0.0 - var/g_amount = 0.0 - var/gold_amount = 0.0 - var/silver_amount = 0.0 - var/plasma_amount = 0.0 - var/uranium_amount = 0.0 - var/diamond_amount = 0.0 - var/clown_amount = 0.0 - var/adamantine_amount = 0.0 + var/datum/material_container/materials var/efficiency_coeff var/list/categories = list( @@ -51,12 +42,14 @@ Note: Must be placed west/left of and R&D console to function. component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src) component_parts += new /obj/item/weapon/reagent_containers/glass/beaker(src) + materials = new(src, list(MAT_METAL=1, MAT_GLASS=1, MAT_SILVER=1, MAT_GOLD=1, MAT_DIAMOND=1, MAT_PLASMA=1, MAT_URANIUM=1, MAT_BANANIUM=1)) RefreshParts() reagents.my_atom = src -/obj/machinery/r_n_d/protolathe/proc/TotalMaterials() //returns the total of all the stored materials. Makes code neater. - return m_amount + g_amount + gold_amount + silver_amount + plasma_amount + uranium_amount + diamond_amount + clown_amount +/obj/machinery/r_n_d/protolathe/Destroy() + qdel(materials) + return ..() /obj/machinery/r_n_d/protolathe/RefreshParts() var/T = 0 @@ -64,33 +57,16 @@ Note: Must be placed west/left of and R&D console to function. G.reagents.trans_to(src, G.reagents.total_volume) for(var/obj/item/weapon/stock_parts/matter_bin/M in component_parts) T += M.rating - max_material_storage = T * 75000 + materials.max_amount = T * 75000 T = 0 for(var/obj/item/weapon/stock_parts/manipulator/M in component_parts) T += (M.rating/3) efficiency_coeff = max(T, 1) /obj/machinery/r_n_d/protolathe/proc/check_mat(datum/design/being_built, M) // now returns how many times the item can be built with the material - var/A = 0 - switch(M) - if(MAT_METAL) - A = m_amount - if(MAT_GLASS) - A = g_amount - if(MAT_GOLD) - A = gold_amount - if(MAT_SILVER) - A = silver_amount - if(MAT_PLASMA) - A = plasma_amount - if(MAT_URANIUM) - A = uranium_amount - if(MAT_DIAMOND) - A = diamond_amount - if(MAT_BANANIUM) - A = clown_amount - else - A = reagents.get_reagent_amount(M) + var/A = materials.amount(M) + if(!A) + A = reagents.get_reagent_amount(M) A = A / max(1, (being_built.materials[M]/efficiency_coeff)) return A @@ -110,33 +86,7 @@ Note: Must be placed west/left of and R&D console to function. if(istype(O, /obj/item/weapon/crowbar)) for(var/obj/item/weapon/reagent_containers/glass/G in component_parts) reagents.trans_to(G, G.reagents.maximum_volume) - if(m_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/metal/G = new /obj/item/stack/sheet/metal(src.loc) - G.amount = round(m_amount / G.perunit) - if(g_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/glass/G = new /obj/item/stack/sheet/glass(src.loc) - G.amount = round(g_amount / G.perunit) - if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/plasma/G = new /obj/item/stack/sheet/mineral/plasma(src.loc) - G.amount = round(plasma_amount / G.perunit) - if(silver_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/silver/G = new /obj/item/stack/sheet/mineral/silver(src.loc) - G.amount = round(silver_amount / G.perunit) - if(gold_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/gold/G = new /obj/item/stack/sheet/mineral/gold(src.loc) - G.amount = round(gold_amount / G.perunit) - if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/uranium/G = new /obj/item/stack/sheet/mineral/uranium(src.loc) - G.amount = round(uranium_amount / G.perunit) - if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/diamond/G = new /obj/item/stack/sheet/mineral/diamond(src.loc) - G.amount = round(diamond_amount / G.perunit) - if(clown_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/bananium/G = new /obj/item/stack/sheet/mineral/bananium(src.loc) - G.amount = round(clown_amount / G.perunit) - if(adamantine_amount >= MINERAL_MATERIAL_AMOUNT) - var/obj/item/stack/sheet/mineral/adamantine/G = new /obj/item/stack/sheet/mineral/adamantine(src.loc) - G.amount = round(adamantine_amount / G.perunit) + materials.retrieve_all() default_deconstruction_crowbar(O) return 1 else @@ -152,52 +102,27 @@ Note: Must be placed west/left of and R&D console to function. return 1 if (O.is_open_container()) return - if (!istype(O, /obj/item/stack/sheet) || istype(O, /obj/item/stack/sheet/mineral/wood)) - user << "You cannot insert this item into the [src.name]!" - return 1 if (stat) return 1 if(istype(O,/obj/item/stack/sheet)) - var/obj/item/stack/sheet/S = O - if (TotalMaterials() + S.perunit > max_material_storage) + if(!materials.has_space( materials.get_item_material_amount(O) )) user << "The [src.name]'s material bin is full! Please remove material before adding more." return 1 var/obj/item/stack/sheet/stack = O var/amount = round(input("How many sheets do you want to add?") as num)//No decimals - if(!stack || stack.amount <= 0 || amount <= 0 || !in_range(src, stack) || !user.Adjacent(src)) + if(!in_range(src, stack) || !user.Adjacent(src)) return - if(amount > stack.amount) - amount = stack.amount - if(max_material_storage - TotalMaterials() < (amount*stack.perunit))//Can't overfill - amount = min(stack.amount, round((max_material_storage-TotalMaterials())/stack.perunit)) - - busy = 1 - use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount/10))) - user << "You add [amount] sheets to the [src.name]." - if(istype(stack, /obj/item/stack/sheet/metal)) - m_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/glass)) - g_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/gold)) - gold_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/silver)) - silver_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/plasma)) - plasma_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/uranium)) - uranium_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/diamond)) - diamond_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/bananium)) - clown_amount += amount * MINERAL_MATERIAL_AMOUNT - else if(istype(stack, /obj/item/stack/sheet/mineral/adamantine)) - adamantine_amount += amount * MINERAL_MATERIAL_AMOUNT - stack.use(amount) + var/amount_inserted = materials.insert_stack(O,amount) + if(!amount_inserted) + user << "You could not insert [O], it has no usable materials." + return 1 + else + busy = 1 + use_power(max(1000, (MINERAL_MATERIAL_AMOUNT*amount_inserted/10))) + user << "You add [amount_inserted] sheets to the [src.name]." + overlays += "protolathe_[stack.name]" + sleep(10) + overlays -= "protolathe_[stack.name]" + busy = 0 updateUsrDialog() - - overlays += "protolathe_[stack.name]" - sleep(10) - overlays -= "protolathe_[stack.name]" - busy = 0 - diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 7cbe1fe68f1..f8f5cbd1c0d 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -276,8 +276,8 @@ won't update every console in existence) but it's more of a hassle to do. Also, else //Same design always gain quality screen = 2.3 //Crit fail gives the same design a lot of reliability, like really a lot if(linked_lathe) //Also sends salvaged materials to a linked protolathe, if any. - linked_lathe.m_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_METAL]*(linked_destroy.decon_mod/10))) - linked_lathe.g_amount += min((linked_lathe.max_material_storage - linked_lathe.TotalMaterials()), (linked_destroy.loaded_item.materials[MAT_GLASS]*(linked_destroy.decon_mod/10))) + for(var/material in linked_destroy.loaded_item.materials) + linked_lathe.materials.insert_amount(min((linked_lathe.materials.max_amount - linked_lathe.materials.total_amount), (linked_destroy.loaded_item.materials[material]*(linked_destroy.decon_mod/10))), material) feedback_add_details("item_deconstructed","[linked_destroy.loaded_item.type]") linked_destroy.loaded_item = null else @@ -377,33 +377,17 @@ won't update every console in existence) but it's more of a hassle to do. Also, flick("protolathe_n",linked_lathe) use_power(power) - for(var/M in being_built.materials) - if(linked_lathe.check_mat(being_built, M) < amount) - src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") - enough_materials = 0 - g2g = 0 - break + var/list/efficient_mats = list() + for(var/MAT in being_built.materials) + efficient_mats[MAT] = being_built.materials[MAT] / coeff + + if(!linked_lathe.materials.has_materials(efficient_mats, amount)) + src.visible_message("The [src.name] beeps, \"Not enough materials to complete prototype.\"") + enough_materials = 0 + g2g = 0 + if(enough_materials) - for(var/M in being_built.materials) - switch(M) - if(MAT_METAL) - linked_lathe.m_amount = max(0, (linked_lathe.m_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_GLASS) - linked_lathe.g_amount = max(0, (linked_lathe.g_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_GOLD) - linked_lathe.gold_amount = max(0, (linked_lathe.gold_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_SILVER) - linked_lathe.silver_amount = max(0, (linked_lathe.silver_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_PLASMA) - linked_lathe.plasma_amount = max(0, (linked_lathe.plasma_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_URANIUM) - linked_lathe.uranium_amount = max(0, (linked_lathe.uranium_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_DIAMOND) - linked_lathe.diamond_amount = max(0, (linked_lathe.diamond_amount-(being_built.materials[M]/coeff * amount))) - if(MAT_BANANIUM) - linked_lathe.clown_amount = max(0, (linked_lathe.clown_amount-(being_built.materials[M]/coeff * amount))) - else - linked_lathe.reagents.remove_reagent(M, being_built.materials[M]/coeff * amount) + linked_lathe.materials.use_amount(efficient_mats, amount) var/P = being_built.build_path //lets save these values before the spawn() just in case. Nobody likes runtimes. var/R = being_built.reliability @@ -495,40 +479,26 @@ won't update every console in existence) but it's more of a hassle to do. Also, else if(href_list["lathe_ejectsheet"] && linked_lathe) //Causes the protolathe to eject a sheet of material var/desired_num_sheets = text2num(href_list["lathe_ejectsheet_amt"]) - var/res_amount, type + var/MAT switch(href_list["lathe_ejectsheet"]) if("metal") - type = /obj/item/stack/sheet/metal - res_amount = "m_amount" + MAT = MAT_METAL if("glass") - type = /obj/item/stack/sheet/glass - res_amount = "g_amount" + MAT = MAT_GLASS if("gold") - type = /obj/item/stack/sheet/mineral/gold - res_amount = "gold_amount" + MAT = MAT_GOLD if("silver") - type = /obj/item/stack/sheet/mineral/silver - res_amount = "silver_amount" + MAT = MAT_SILVER if("plasma") - type = /obj/item/stack/sheet/mineral/plasma - res_amount = "plasma_amount" + MAT = MAT_PLASMA if("uranium") - type = /obj/item/stack/sheet/mineral/uranium - res_amount = "uranium_amount" + MAT = MAT_URANIUM if("diamond") - type = /obj/item/stack/sheet/mineral/diamond - res_amount = "diamond_amount" + MAT = MAT_DIAMOND if("clown") - type = /obj/item/stack/sheet/mineral/bananium - res_amount = "clown_amount" - if(ispath(type) && hasvar(linked_lathe, res_amount)) - var/obj/item/stack/sheet/sheet = new type(linked_lathe.loc) - var/available_num_sheets = round(linked_lathe.vars[res_amount]/sheet.perunit) - if(available_num_sheets>0) - sheet.amount = min(available_num_sheets, desired_num_sheets) - linked_lathe.vars[res_amount] = max(0, (linked_lathe.vars[res_amount]-sheet.amount * sheet.perunit)) - else - qdel(sheet) + MAT = MAT_BANANIUM + linked_lathe.materials.retrieve_sheets(desired_num_sheets, MAT) + else if(href_list["imprinter_ejectsheet"] && linked_imprinter) //Causes the protolathe to eject a sheet of material var/desired_num_sheets = text2num(href_list["imprinter_ejectsheet_amt"]) var/res_amount, type @@ -816,7 +786,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Material Storage" dat += "Chemical Storage
" dat += "

Protolathe Menu:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" dat += "
\ @@ -834,7 +804,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Browsing [selected_category]:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -869,7 +839,7 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Main Menu" dat += "Protolathe Menu" dat += "

Search results:


" - dat += "Material Amount: [linked_lathe.TotalMaterials()] / [linked_lathe.max_material_storage]
" + dat += "Material Amount: [linked_lathe.materials.total_amount] / [linked_lathe.materials.max_amount]
" dat += "Chemical Volume: [linked_lathe.reagents.total_volume] / [linked_lathe.reagents.maximum_volume]
" var/coeff = linked_lathe.efficiency_coeff @@ -903,52 +873,60 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "Protolathe Menu
" dat += "

Material Storage:



" //Metal - dat += "* [linked_lathe.m_amount] of Metal: " - if(linked_lathe.m_amount >= 3750) dat += "Eject " - if(linked_lathe.m_amount >= 18750) dat += "5x " - if(linked_lathe.m_amount >= 3750) dat += "All" + var/m_amount = linked_lathe.materials.amount(MAT_METAL) + dat += "* [m_amount] of Metal: " + if(m_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(m_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(m_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Glass - dat += "* [linked_lathe.g_amount] of Glass: " - if(linked_lathe.g_amount >= 3750) dat += "Eject " - if(linked_lathe.g_amount >= 18750) dat += "5x " - if(linked_lathe.g_amount >= 3750) dat += "All" + var/g_amount = linked_lathe.materials.amount(MAT_GLASS) + dat += "* [g_amount] of Glass: " + if(g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(g_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Gold - dat += "* [linked_lathe.gold_amount] of Gold: " - if(linked_lathe.gold_amount >= 2000) dat += "Eject " - if(linked_lathe.gold_amount >= 10000) dat += "5x " - if(linked_lathe.gold_amount >= 2000) dat += "All" + var/gold_amount = linked_lathe.materials.amount(MAT_GOLD) + dat += "* [gold_amount] of Gold: " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Silver - dat += "* [linked_lathe.silver_amount] of Silver: " - if(linked_lathe.silver_amount >= 2000) dat += "Eject " - if(linked_lathe.silver_amount >= 10000) dat += "5x " - if(linked_lathe.silver_amount >= 2000) dat += "All" + var/silver_amount = linked_lathe.materials.amount(MAT_SILVER) + dat += "* [silver_amount] of Silver: " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(silver_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Plasma - dat += "* [linked_lathe.plasma_amount] of Solid Plasma: " - if(linked_lathe.plasma_amount >= 2000) dat += "Eject " - if(linked_lathe.plasma_amount >= 10000) dat += "5x " - if(linked_lathe.plasma_amount >= 2000) dat += "All" + var/plasma_amount = linked_lathe.materials.amount(MAT_PLASMA) + dat += "* [plasma_amount] of Solid Plasma: " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(plasma_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Uranium - dat += "* [linked_lathe.uranium_amount] of Uranium: " - if(linked_lathe.uranium_amount >= 2000) dat += "Eject " - if(linked_lathe.uranium_amount >= 10000) dat += "5x " - if(linked_lathe.uranium_amount >= 2000) dat += "All" + var/uranium_amount = linked_lathe.materials.amount(MAT_URANIUM) + dat += "* [uranium_amount] of Uranium: " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(uranium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Diamond - dat += "* [linked_lathe.diamond_amount] of Diamond: " - if(linked_lathe.diamond_amount >= 2000) dat += "Eject " - if(linked_lathe.diamond_amount >= 10000) dat += "5x " - if(linked_lathe.diamond_amount >= 2000) dat += "All" + var/diamond_amount = linked_lathe.materials.amount(MAT_DIAMOND) + dat += "* [diamond_amount] of Diamond: " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Bananium - dat += "* [linked_lathe.clown_amount] of Bananium: " - if(linked_lathe.clown_amount >= 2000) dat += "Eject " - if(linked_lathe.clown_amount >= 10000) dat += "5x " - if(linked_lathe.clown_amount >= 2000) dat += "All" + var/bananium_amount = linked_lathe.materials.amount(MAT_BANANIUM) + dat += "* [bananium_amount] of Bananium: " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(bananium_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" if(3.3) @@ -1048,21 +1026,21 @@ won't update every console in existence) but it's more of a hassle to do. Also, dat += "

Material Storage:



" //Glass dat += "* [linked_imprinter.g_amount] glass: " - if(linked_imprinter.g_amount >= 3750) dat += "Eject " - if(linked_imprinter.g_amount >= 18750) dat += "5x " - if(linked_imprinter.g_amount >= 3750) dat += "All" + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.g_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Gold dat += "* [linked_imprinter.gold_amount] gold: " - if(linked_imprinter.gold_amount >= 2000) dat += "Eject " - if(linked_imprinter.gold_amount >= 10000) dat += "5x " - if(linked_imprinter.gold_amount >= 2000) dat += "All" + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.gold_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" //Diamond dat += "* [linked_imprinter.diamond_amount] diamond: " - if(linked_imprinter.diamond_amount >= 2000) dat += "Eject " - if(linked_imprinter.diamond_amount >= 10000) dat += "5x " - if(linked_imprinter.diamond_amount >= 2000) dat += "All" + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "Eject " + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT*5) dat += "5x " + if(linked_imprinter.diamond_amount >= MINERAL_MATERIAL_AMOUNT) dat += "All" dat += "
" var/datum/browser/popup = new(user, "rndconsole", name, 460, 550)