diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 50df6335..a42856d1 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -327,41 +327,3 @@ -//var/global/lawyer = 0//Checks for another lawyer //This changed clothes on 2nd lawyer, both IA get the same dreds. -/datum/job/lawyer - title = "Internal Affairs Agent" - flag = LAWYER - department_flag = CIVILIAN - faction = "Station" - total_positions = 2 - spawn_positions = 2 - supervisors = "the captain" - selection_color = "#dddddd" - access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels) - minimal_access = list(access_lawyer, access_court, access_sec_doors) - - - equip(var/mob/living/carbon/human/H) - if(!H) return 0 - H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) - switch(H.backbag) - if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) - if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) - if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/internalaffairs(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/internalaffairs(H), slot_wear_suit) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) - H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses/big(H), slot_glasses) - H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/briefcase(H), slot_l_hand) - if(H.backbag == 1) - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) - else - H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) - var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) - L.imp_in = H - L.implanted = 1 - var/datum/organ/external/affected = H.organs_by_name["head"] - affected.implants += L - L.part = affected - return 1 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index 12b69144..e5fa8aed 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -86,20 +86,18 @@ -/datum/job/detective - title = "Detective" - flag = DETECTIVE +/datum/job/forensictech + title = "Forensic Technician" + flag = FT department_flag = ENGSEC faction = "Station" total_positions = 1 spawn_positions = 1 supervisors = "the head of security" selection_color = "#ffeeee" - alt_titles = list("Forensic Technician") - access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court) - minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue, access_maint_tunnels, access_court) - alt_titles = list("Forensic Technician") + access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue) + minimal_access = list(access_security, access_sec_doors, access_forensics_lockers, access_morgue) minimal_player_age = 3 equip(var/mob/living/carbon/human/H) if(!H) return 0 @@ -108,19 +106,10 @@ if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) - H.equip_to_slot_or_del(new /obj/item/clothing/under/det(H), slot_w_uniform) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/brown(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security2(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/detective(H), slot_belt) -/* var/obj/item/clothing/mask/cigarette/CIG = new /obj/item/clothing/mask/cigarette(H) - CIG.light("") - H.equip_to_slot_or_del(CIG, slot_wear_mask) */ H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) - if(H.mind.role_alt_title && H.mind.role_alt_title == "Forensic Technician") - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/forensics/blue(H), slot_wear_suit) - else - H.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/det_suit(H), slot_wear_suit) - 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/weapon/lighter/zippo(H), slot_l_store) if(H.backbag == 1)//Why cant some of these things spawn in his office? H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) @@ -144,8 +133,8 @@ spawn_positions = 5 supervisors = "the head of security" selection_color = "#ffeeee" - access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue) - minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels) + access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_morgue, access_forensics_lockers) + minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_forensics_lockers) minimal_player_age = 3 equip(var/mob/living/carbon/human/H) if(!H) return 0 @@ -166,3 +155,67 @@ H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack) return 1 + +/datum/job/investigator + title = "Investigator" + flag = INV + department_flag = ENGSEC + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the head of security" + selection_color = "#ffeeee" + access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_forensics_lockers) + minimal_access = list(access_security, access_sec_doors, access_brig, access_court, access_maint_tunnels, access_forensics_lockers) + minimal_player_age = 3 + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) + switch(H.backbag) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/security(H), slot_back) + if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_sec(H), slot_back) + if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/security2(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/security(H), slot_belt) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + return 1 + + +/datum/job/internaladviser + title = "Internal Adviser" + flag = INTAD + department_flag = ENGSEC + faction = "Station" + total_positions = 2 + spawn_positions = 2 + supervisors = "the head of security" + selection_color = "#dddddd" + access = list(access_lawyer, access_court, access_sec_doors, access_maint_tunnels) + minimal_access = list(access_lawyer, access_court, access_sec_doors) + + + equip(var/mob/living/carbon/human/H) + if(!H) return 0 + H.equip_to_slot_or_del(new /obj/item/device/radio/headset/headset_sec(H), slot_l_ear) + switch(H.backbag) + if(2) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack(H), slot_back) + if(3) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel_norm(H), slot_back) + if(4) H.equip_to_slot_or_del(new /obj/item/weapon/storage/backpack/satchel(H), slot_back) + H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/navy/officer/blue(H), slot_w_uniform) + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/laceup(H), slot_shoes) + H.equip_to_slot_or_del(new /obj/item/device/pda/lawyer(H), slot_belt) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) + var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) + L.imp_in = H + L.implanted = 1 + var/datum/organ/external/affected = H.organs_by_name["head"] + affected.implants += L + L.part = affected + return 1 \ No newline at end of file diff --git a/code/game/jobs/jobs.dm b/code/game/jobs/jobs.dm index 8b7ff491..d7d85871 100644 --- a/code/game/jobs/jobs.dm +++ b/code/game/jobs/jobs.dm @@ -4,16 +4,17 @@ var/const/ENGSEC =(1<<0) var/const/CAPTAIN =(1<<0) var/const/HOS =(1<<1) var/const/WARDEN =(1<<2) -var/const/DETECTIVE =(1<<3) -var/const/OFFICER =(1<<4) -var/const/CHIEF =(1<<5) -var/const/ENGINEER =(1<<6) -var/const/ATMOSTECH =(1<<7) -var/const/AI =(1<<8) -var/const/CYBORG =(1<<9) -var/const/INTERN_SEC =(1<<10) -var/const/INTERN_ENG =(1<<11) - +var/const/OFFICER =(1<<3) +var/const/CHIEF =(1<<4) +var/const/ENGINEER =(1<<5) +var/const/ATMOSTECH =(1<<6) +var/const/AI =(1<<7) +var/const/CYBORG =(1<<8) +var/const/INTERN_SEC =(1<<9) +var/const/INTERN_ENG =(1<<10) +var/const/FT =(1<<11) +var/const/INTAD =(1<<12) +var/const/INV =(1<<13) var/const/MEDSCI =(1<<1) @@ -112,7 +113,9 @@ var/list/civilian_positions = list( var/list/security_positions = list( "Head of Security", "Warden", - "Detective", + "Forensice Technician", + "Investigator", + "Internal Adviser", "Security Officer", "Security Cadet" ) diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm index 6e084931..357c9497 100644 --- a/code/game/machinery/bots/ed209bot.dm +++ b/code/game/machinery/bots/ed209bot.dm @@ -78,7 +78,7 @@ src.icon_state = "[lasercolor]ed209[src.on]" spawn(3) src.botcard = new /obj/item/weapon/card/id(src) - var/datum/job/detective/J = new/datum/job/detective + var/datum/job/investigator/J = new/datum/job/investigator src.botcard.access = J.get_access() if(radio_controller) diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index 3aa31527..c56e1fc6 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -75,7 +75,7 @@ src.icon_state = "secbot[src.on]" spawn(3) src.botcard = new /obj/item/weapon/card/id(src) - var/datum/job/detective/J = new/datum/job/detective + var/datum/job/investigator/J = new/datum/job/investigator src.botcard.access = J.get_access() if(radio_controller) radio_controller.add_object(src, control_freq, filter = RADIO_SECBOT) diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm index 1615c756..7bd91a4f 100644 --- a/code/game/objects/items/weapons/handcuffs.dm +++ b/code/game/objects/items/weapons/handcuffs.dm @@ -149,3 +149,96 @@ var/last_chew = 0 /obj/item/weapon/handcuffs/cyborg dispenser = 1 + +/obj/item/weapon/handcuffs/ziptie + name = "zipties" + desc = "Sturdy, and reliable. Likely used to restain unruly people." + gender = PLURAL + icon = 'icons/obj/items.dmi' + icon_state = "ziptie" + var/singular_name = "ziptie" + var/amount = 1 + var/max_amount = 6 + +/obj/item/weapon/handcuffs/ziptie/New(var/loc, var/amount=null) + ..() + if (amount) + src.amount=amount + return + +/obj/item/weapon/handcuffs/ziptie/Del() + if (src && usr && usr.machine==src) + usr << browse(null, "window=stack") + ..() + +/obj/item/weapon/handcuffs/ziptie/examine() + set src in view(1) + ..() + usr << "There are [src.amount] [src.singular_name]\s in the stack." + return + +/obj/item/weapon/handcuffs/ziptie/proc/use(var/amount) + src.amount-=amount + if (src.amount<=0) + var/oldsrc = src + src = null //dont kill proc after del() + if(usr) + usr.before_take_item(oldsrc) + del(oldsrc) + return + +/obj/item/weapon/handcuffs/ziptie/proc/add_to_stacks(mob/usr as mob) + var/obj/item/weapon/handcuffs/ziptie/oldsrc = src + src = null + for (var/obj/item/weapon/handcuffs/ziptie/N in usr.loc) + if (N==oldsrc) + continue + if (!istype(N, oldsrc.type)) + continue + if (N.amount>=N.max_amount) + continue + oldsrc.attackby(N, usr) + usr << "You add new [N.singular_name] to the stack. It now contains [N.amount] [N.singular_name]\s." + if(!oldsrc) + break + +/obj/item/weapon/handcuffs/ziptie/attack_hand(mob/user as mob) + if (user.get_inactive_hand() == src) + var/obj/item/weapon/handcuffs/ziptie/F = new src.type( user, 1) + F.copy_evidences(src) + user.put_in_hands(F) + src.add_fingerprint(user) + F.add_fingerprint(user) + use(1) + if (src && usr.machine==src) + spawn(0) src.interact(usr) + else + ..() + return + +/obj/item/weapon/handcuffs/ziptie/attackby(obj/item/W as obj, mob/user as mob) + ..() + if (istype(W, src.type)) + var/obj/item/weapon/handcuffs/ziptie/S = W + if (S.amount >= max_amount) + return 1 + var/to_transfer as num + if (user.get_inactive_hand()==src) + to_transfer = 1 + else + to_transfer = min(src.amount, S.max_amount-S.amount) + S.amount+=to_transfer + if (S && usr.machine==S) + spawn(0) S.interact(usr) + src.use(to_transfer) + if (src && usr.machine==src) + spawn(0) src.interact(usr) + else return ..() + +/obj/item/weapon/handcuffs/ziptie/proc/copy_evidences(obj/item/weapon/handcuffs/ziptie/from as obj) + src.blood_DNA = from.blood_DNA + src.fingerprints = from.fingerprints + src.fingerprintshidden = from.fingerprintshidden + src.fingerprintslast = from.fingerprintslast + + diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index 351befea..30e20b79 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -236,8 +236,8 @@ siemens_coefficient = 0.9 /obj/item/clothing/under/rank/navy/officer/blue - name = "Blue Officer Uniform" - desc = "A blue service uniform worn by a security officer." + name = "Internal Advisor Uniform" + desc = "A blue service uniform worn by Advisors." icon_state = "officerblueclothes" item_state = "officerblueclothes" item_color = "officerblueclothes" diff --git a/code/modules/economy/Job_Departments.dm b/code/modules/economy/Job_Departments.dm index 06e2b58a..1213c8b7 100644 --- a/code/modules/economy/Job_Departments.dm +++ b/code/modules/economy/Job_Departments.dm @@ -65,10 +65,14 @@ var/list/station_departments = list("Command", "Medical", "Engineering", "Scienc /datum/job/warden/department = "Security" -/datum/job/detective/department = "Security" +/datum/job/forensicetech/department = "Security" /datum/job/officer/department = "Security" +/datum/job/investigator/department = "Security" + +/datum/job/internaladviser/department = "Security" + /datum/job/intern_sec/department = "Security" /datum/job/intern_med/department = "Medical" diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 117c8b6c..2b10b2da 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -599,14 +599,30 @@ datum/preferences clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-sec"), ICON_OVERLAY) if(4) clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) - if(DETECTIVE) - clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if(FT) + clothes_s = new /icon('icons/mob/uniform.dmi', "redshirt2_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) clothes_s.Blend(new /icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) - if(prob(1)) - clothes_s.Blend(new /icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) - clothes_s.Blend(new /icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) + switch(backbag) + if(2) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) + if(3) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) + if(4) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) + if(INV) + clothes_s = new /icon('icons/mob/uniform.dmi', "redshirt2_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + switch(backbag) + if(2) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) + if(3) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel-norm"), ICON_OVERLAY) + if(4) + clothes_s.Blend(new /icon('icons/mob/back.dmi', "satchel"), ICON_OVERLAY) + if(INTAD) + clothes_s = new /icon('icons/mob/uniform.dmi', "officerblueclothes_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) switch(backbag) if(2) clothes_s.Blend(new /icon('icons/mob/back.dmi', "backpack"), ICON_OVERLAY) diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index bc938c6e..b81e1419 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ