From e014f02324316c468bddd3cae3e1199ffd3898c9 Mon Sep 17 00:00:00 2001 From: Kyep Date: Mon, 26 Mar 2018 15:44:17 -0700 Subject: [PATCH 1/7] Improves admin outfits, fixes magboots being missing --- code/datums/datacore.dm | 267 +++++++++--------- code/datums/outfits/outfit.dm | 8 + code/datums/outfits/outfit_admin.dm | 190 +++---------- code/game/jobs/job/central.dm | 45 +-- code/game/jobs/job/job.dm | 7 - .../objects/items/weapons/storage/boxes.dm | 23 ++ 6 files changed, 240 insertions(+), 300 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 558f6407528..96c663fb703 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -468,137 +468,142 @@ var/record_id_num = 1001 var/icon/clothes_s = null - switch(H.mind.assigned_role) - if("Head of Personnel") - clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Nanotrasen Representative") - clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - if("Blueshield") - clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY) - if("Magistrate") - clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY) - if("Bartender") - clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Botanist") - clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Chef") - clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Janitor") - clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Librarian") - clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Quartermaster") - clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Cargo Technician") - clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Shaft Miner") - clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Lawyer") - clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Chaplain") - clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Research Director") - clothes_s = new /icon('icons/mob/uniform.dmi', "director_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) - if("Scientist") - clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY) - if("Chemist") - clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY) - if("Chief Medical Officer") - clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY) - if("Medical Doctor") - clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) - if("Geneticist") - clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY) - if("Virologist") - clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY) - if("Psychiatrist") - clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY) - if("Paramedic") - clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Captain") - clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Head of Security") - clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - if("Warden") - clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - if("Detective") - clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) - if("Security Pod Pilot") - clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY) - if("Brig Physician") - clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY) - if("Security Officer") - clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - if("Chief Engineer") - clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Station Engineer") - clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Life Support Specialist") - clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Mechanic") - clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Roboticist") - clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) - else if(H.mind.assigned_role in get_all_centcom_jobs()) - clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - else - clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") - clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if(H.mind) + switch(H.mind.assigned_role) + if("Head of Personnel") + clothes_s = new /icon('icons/mob/uniform.dmi', "hop_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Nanotrasen Representative") + clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + if("Blueshield") + clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/hands.dmi', "swat_gl"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "blueshield"), ICON_OVERLAY) + if("Magistrate") + clothes_s = new /icon('icons/mob/uniform.dmi', "really_black_suit_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "judge"), ICON_OVERLAY) + if("Bartender") + clothes_s = new /icon('icons/mob/uniform.dmi', "ba_suit_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Botanist") + clothes_s = new /icon('icons/mob/uniform.dmi', "hydroponics_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Chef") + clothes_s = new /icon('icons/mob/uniform.dmi', "chef_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Janitor") + clothes_s = new /icon('icons/mob/uniform.dmi', "janitor_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Librarian") + clothes_s = new /icon('icons/mob/uniform.dmi', "red_suit_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Quartermaster") + clothes_s = new /icon('icons/mob/uniform.dmi', "qm_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Cargo Technician") + clothes_s = new /icon('icons/mob/uniform.dmi', "cargotech_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Shaft Miner") + clothes_s = new /icon('icons/mob/uniform.dmi', "miner_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Lawyer") + clothes_s = new /icon('icons/mob/uniform.dmi', "internalaffairs_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Chaplain") + clothes_s = new /icon('icons/mob/uniform.dmi', "chapblack_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Research Director") + clothes_s = new /icon('icons/mob/uniform.dmi', "director_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) + if("Scientist") + clothes_s = new /icon('icons/mob/uniform.dmi', "toxinswhite_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_tox_open"), ICON_OVERLAY) + if("Chemist") + clothes_s = new /icon('icons/mob/uniform.dmi', "chemistrywhite_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_chem_open"), ICON_OVERLAY) + if("Chief Medical Officer") + clothes_s = new /icon('icons/mob/uniform.dmi', "cmo_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_cmo_open"), ICON_OVERLAY) + if("Medical Doctor") + clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) + if("Geneticist") + clothes_s = new /icon('icons/mob/uniform.dmi', "geneticswhite_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_gen_open"), ICON_OVERLAY) + if("Virologist") + clothes_s = new /icon('icons/mob/uniform.dmi', "virologywhite_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_vir_open"), ICON_OVERLAY) + if("Psychiatrist") + clothes_s = new /icon('icons/mob/uniform.dmi', "psych_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_UNDERLAY) + if("Paramedic") + clothes_s = new /icon('icons/mob/uniform.dmi', "paramedic_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Captain") + clothes_s = new /icon('icons/mob/uniform.dmi', "captain_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Head of Security") + clothes_s = new /icon('icons/mob/uniform.dmi', "hosred_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + if("Warden") + clothes_s = new /icon('icons/mob/uniform.dmi', "warden_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + if("Detective") + clothes_s = new /icon('icons/mob/uniform.dmi', "detective_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) + if("Security Pod Pilot") + clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "bomber"), ICON_OVERLAY) + if("Brig Physician") + clothes_s = new /icon('icons/mob/uniform.dmi', "medical_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "fr_jacket_open"), ICON_OVERLAY) + if("Security Officer") + clothes_s = new /icon('icons/mob/uniform.dmi', "secred_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + if("Chief Engineer") + clothes_s = new /icon('icons/mob/uniform.dmi', "chief_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Station Engineer") + clothes_s = new /icon('icons/mob/uniform.dmi', "engine_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Life Support Specialist") + clothes_s = new /icon('icons/mob/uniform.dmi', "atmos_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Mechanic") + clothes_s = new /icon('icons/mob/uniform.dmi', "mechanic_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Roboticist") + clothes_s = new /icon('icons/mob/uniform.dmi', "robotics_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(new /icon('icons/mob/suit.dmi', "labcoat_open"), ICON_OVERLAY) + else if(H.mind.assigned_role in get_all_centcom_jobs()) + clothes_s = new /icon('icons/mob/uniform.dmi', "officer_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + else + clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + else + clothes_s = new /icon('icons/mob/uniform.dmi', "grey_s") + clothes_s.Blend(new /icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + preview_icon.Blend(face_s, ICON_OVERLAY) // Why do we do this twice if(clothes_s) diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm index 9517ee09ef8..cdc44d39833 100644 --- a/code/datums/outfits/outfit.dm +++ b/code/datums/outfits/outfit.dm @@ -22,6 +22,8 @@ var/pda = null var/internals_slot = null //ID of slot containing a gas tank var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format + var/list/implants = list() + var/list/cybernetic_implants = list() /datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -89,6 +91,12 @@ var/number = backpack_contents[path] for(var/i = 0, i < number, i++) equip_item(H, path, slot_in_backpack) + for(var/path in implants) + var/obj/item/weapon/implant/I = new path(H) + I.implant(H) + for(var/path in cybernetic_implants) + var/obj/item/organ/internal/O = new path(H) + O.insert(H) post_equip(H, visualsOnly) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 5212570223f..8b7801453c6 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -1,6 +1,13 @@ // Used for 'select equipment' // code/modules/admin/verbs/debug.dm 566 +/datum/outfit/admin/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(!visualsOnly) + H.mind.assigned_role = name + H.job = name + + /proc/apply_to_card(obj/item/weapon/card/id/I, mob/living/carbon/human/H, list/access = list(), rank, special_icon) if(!istype(I) || !istype(H)) return 0 @@ -95,6 +102,7 @@ mask = /obj/item/clothing/mask/gas/syndicate l_ear = /obj/item/device/radio/headset/syndicate/alt glasses = /obj/item/clothing/glasses/night + shoes = /obj/item/clothing/shoes/magboots/syndie l_pocket = /obj/item/weapon/pinpointer/advpinpointer l_hand = /obj/item/weapon/tank/jetpack/oxygen/harness @@ -107,6 +115,7 @@ /obj/item/weapon/grenade/plastic/c4 = 1, /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1, /obj/item/device/flashlight = 1, + /obj/item/clothing/shoes/combat = 1 ) /datum/outfit/admin/syndicate/operative/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -137,9 +146,12 @@ backpack_contents = list( /obj/item/weapon/storage/box/engineer = 1, + /obj/item/device/flashlight = 1, /obj/item/weapon/reagent_containers/food/pill/initropidril = 1, /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1, - /obj/item/ammo_box/magazine/m50 = 2) + /obj/item/ammo_box/magazine/m50 = 2, + /obj/item/clothing/shoes/magboots/syndie/advance = 1 + ) id_icon = "commander" id_access = "Syndicate Operative Leader" @@ -152,22 +164,11 @@ var/obj/item/weapon/implant/uplink/U = new /obj/item/weapon/implant/uplink(H) U.implant(H) - U.hidden_uplink.uses = 500//a measly 1000 TC along with the uplink in the pocket + U.hidden_uplink.uses = 500 var/obj/item/weapon/implant/dust/D = new(H) D.implant(H) -/datum/outfit/admin/syndicate/bomber - name = "Syndicate Bomber" - - backpack_contents = list( - /obj/item/weapon/storage/box/engineer = 1, - /obj/item/device/flashlight = 1, - /obj/item/weapon/card/emag = 1, - /obj/item/device/radio/beacon/syndicate/bomb = 2, - /obj/item/device/syndicatedetonator = 1, - /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1 - ) /datum/outfit/admin/nt_vip name = "VIP Guest" @@ -193,114 +194,6 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("VIP Guest"), "VIP Guest") -/datum/outfit/admin/nt_navy_officer - name = "NT Navy Officer" - - uniform = /obj/item/clothing/under/rank/centcom/officer - back = /obj/item/weapon/storage/backpack/satchel - belt = /obj/item/weapon/gun/energy/pulse/pistol - gloves = /obj/item/clothing/gloves/color/white - shoes = /obj/item/clothing/shoes/centcom - head = /obj/item/clothing/head/beret/centcom/officer - l_ear = /obj/item/device/radio/headset/centcom - glasses = /obj/item/clothing/glasses/hud/security/sunglasses - id = /obj/item/weapon/card/id/centcom - pda = /obj/item/device/pda/centcom - backpack_contents = list( - /obj/item/weapon/storage/box/engineer = 1, - /obj/item/weapon/implanter/dust = 1, - /obj/item/weapon/implanter/death_alarm = 1 - ) - -/datum/outfit/admin/nt_navy_officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/weapon/card/id/I = H.wear_id - if(istype(I)) - apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Officer"), "Nanotrasen Navy Officer") - - var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) - L.implant(H) - - -/datum/outfit/admin/nt_special_ops_officer - name = "NT Special Ops Officer" - - uniform = /obj/item/clothing/under/syndicate/combat - suit = /obj/item/clothing/suit/space/deathsquad/officer - back = /obj/item/weapon/storage/backpack/security - belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911 - gloves = /obj/item/clothing/gloves/combat - shoes = /obj/item/clothing/shoes/combat - head = /obj/item/clothing/head/helmet/space/deathsquad/beret - mask = /obj/item/clothing/mask/cigarette/cigar/cohiba - l_ear = /obj/item/device/radio/headset/centcom - glasses = /obj/item/clothing/glasses/thermal/cyber - id = /obj/item/weapon/card/id/centcom - r_pocket = /obj/item/weapon/storage/box/matches - pda = /obj/item/device/pda/centcom - backpack_contents = list( - /obj/item/weapon/storage/box/engineer = 1, - /obj/item/weapon/tank/emergency_oxygen/double/full = 1, - /obj/item/weapon/implanter/dust = 1, - /obj/item/weapon/implanter/death_alarm = 1, - /obj/item/weapon/twohanded/dualsaber/red = 1, - /obj/item/weapon/pinpointer/advpinpointer = 1, - /obj/item/weapon/reagent_containers/hypospray/combat/nanites = 1, - /obj/item/weapon/storage/box/zipties = 1, - /obj/item/clothing/shoes/magboots/advance = 1, - /obj/item/weapon/implanter/mindshield = 1, - ) - -/datum/outfit/admin/nt_special_ops_officer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/weapon/card/id/I = H.wear_id - if(istype(I)) - apply_to_card(I, H, get_centcom_access("Special Operations Officer"), "Special Operations Officer") - -/datum/outfit/admin/nt_special_ops_formal - name = "NT Special Ops Formal" - - uniform = /obj/item/clothing/under/rank/centcom/captain - back = /obj/item/weapon/storage/backpack/satchel - belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911 - gloves = /obj/item/clothing/gloves/combat - shoes = /obj/item/clothing/shoes/combat - head = /obj/item/clothing/head/helmet/space/deathsquad/beret - mask = /obj/item/clothing/mask/cigarette/cigar/cohiba - l_ear = /obj/item/device/radio/headset/centcom - glasses = /obj/item/clothing/glasses/thermal/cyber - id = /obj/item/weapon/card/id/centcom - r_pocket = /obj/item/weapon/storage/box/matches - pda = /obj/item/device/pda/centcom - backpack_contents = list( - /obj/item/weapon/storage/box/engineer = 1, - /obj/item/weapon/melee/classic_baton/telescopic = 1, - /obj/item/weapon/implanter/dust = 1, - /obj/item/weapon/implanter/death_alarm = 1 - ) - -/datum/outfit/admin/nt_special_ops_formal/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/device/pda/PDA = H.wear_pda - if(istype(PDA)) - PDA.owner = H.real_name - PDA.ownjob = "Special Operations Officer" - PDA.icon_state = "pda-syndi" - PDA.name = "PDA-[H.real_name] ([PDA.ownjob])" - PDA.desc = "A portable microcomputer by Thinktronic Systems, LTD. This is model is a special edition designed for military field work." - - var/obj/item/weapon/card/id/I = H.wear_id - if(istype(I)) - apply_to_card(I, H, get_centcom_access("Special Operations Officer"), "Special Operations Officer") /datum/outfit/admin/nt_navy_captain name = "NT Navy Captain" @@ -316,10 +209,13 @@ id = /obj/item/weapon/card/id/centcom pda = /obj/item/device/pda/centcom backpack_contents = list( - /obj/item/weapon/storage/box/engineer = 1, - /obj/item/weapon/implanter/dust = 1, + /obj/item/weapon/storage/box/centcomofficer = 1, /obj/item/weapon/implanter/death_alarm = 1 ) + implants = list( + /obj/item/weapon/implant/mindshield, + /obj/item/weapon/implant/dust + ) /datum/outfit/admin/nt_navy_captain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() @@ -330,9 +226,6 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Captain"), "Nanotrasen Navy Captain") - var/obj/item/weapon/implant/L = new /obj/item/weapon/implant/mindshield(H) - L.implant(H) - /datum/outfit/admin/nt_diplomat name = "NT Diplomat" @@ -347,9 +240,12 @@ pda = /obj/item/device/pda/centcom backpack_contents = list( /obj/item/weapon/storage/box/survival = 1, - /obj/item/weapon/implanter/dust = 1, /obj/item/weapon/implanter/death_alarm = 1, ) + implants = list( + /obj/item/weapon/implant/mindshield, + /obj/item/weapon/implant/dust + ) /datum/outfit/admin/nt_diplomat/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() @@ -485,12 +381,10 @@ backpack_contents = list( /obj/item/weapon/storage/box/survival = 1, /obj/item/weapon/reagent_containers/food/drinks/bottle/bottleofnothing = 1, - /obj/item/weapon/storage/box/syndie_kit/caneshotgun = 1, /obj/item/toy/crayon/mime = 1, - /obj/item/weapon/gun/projectile/automatic/pistol = 1, - /obj/item/weapon/suppressor = 1, + /obj/item/weapon/storage/box/syndie_kit/caneshotgun = 1, /obj/item/ammo_casing/shotgun/incendiary/dragonsbreath = 2, - /obj/item/weapon/pen/sleepy = 1, + /obj/item/device/radio/uplink = 1, /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1, /obj/item/device/flashlight = 1 ) @@ -701,7 +595,9 @@ backpack_contents = list( /obj/item/weapon/storage/box/survival = 1, /obj/item/weapon/kitchen/knife/combat = 1, - /obj/item/ammo_box/magazine/m556 = 3) + /obj/item/ammo_box/magazine/m556 = 3, + /obj/item/clothing/shoes/magboots = 1 + ) /datum/outfit/admin/solgov/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -725,7 +621,9 @@ /obj/item/weapon/storage/box/survival = 1, /obj/item/weapon/kitchen/knife/combat = 1, /obj/item/weapon/melee/classic_baton/telescopic = 1, - /obj/item/ammo_box/magazine/m50 = 2) + /obj/item/ammo_box/magazine/m50 = 2, + /obj/item/clothing/shoes/magboots/advance = 1 + ) /datum/outfit/admin/chrono name = "Chrono Legionnaire" @@ -734,7 +632,7 @@ suit = /obj/item/clothing/suit/space/chronos back = /obj/item/weapon/chrono_eraser gloves = /obj/item/clothing/gloves/combat - shoes = /obj/item/clothing/shoes/combat + shoes = /obj/item/clothing/shoes/magboots/advance head = /obj/item/clothing/head/helmet/space/chronos mask = /obj/item/clothing/mask/gas/syndicate glasses = /obj/item/clothing/glasses/night @@ -756,7 +654,7 @@ uniform = /obj/item/clothing/under/color/grey suit = /obj/item/clothing/suit/space back = /obj/item/weapon/tank/jetpack/oxygen - shoes = /obj/item/clothing/shoes/black + shoes = /obj/item/clothing/shoes/magboots head = /obj/item/clothing/head/helmet/space mask = /obj/item/clothing/mask/breath l_ear = /obj/item/device/radio/headset @@ -779,6 +677,7 @@ /datum/outfit/admin/hardsuit back = /obj/item/weapon/tank/jetpack/oxygen mask = /obj/item/clothing/mask/breath + shoes = /obj/item/clothing/shoes/magboots id = /obj/item/weapon/card/id /datum/outfit/admin/hardsuit/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -804,6 +703,7 @@ name = "CE Hardsuit" suit = /obj/item/clothing/suit/space/hardsuit/elite head = /obj/item/clothing/head/helmet/space/hardsuit/elite + shoes = /obj/item/clothing/shoes/magboots/advance /datum/outfit/admin/hardsuit/mining name = "Mining Hardsuit" @@ -814,6 +714,7 @@ name = "Syndi Hardsuit" suit = /obj/item/clothing/suit/space/hardsuit/syndi head = /obj/item/clothing/head/helmet/space/hardsuit/syndi + shoes = /obj/item/clothing/shoes/magboots/syndie /datum/outfit/admin/hardsuit/wizard name = "Wizard Hardsuit" @@ -996,15 +897,15 @@ /obj/item/weapon/storage/box/survival = 1, /obj/item/device/flashlight = 1 ) + implants = list( + /obj/item/weapon/implant/dust + ) /datum/outfit/admin/assassin/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() if(visualsOnly) return - var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H) - D.implant(H) - var/obj/item/device/pda/PDA = H.wear_pda if(istype(PDA)) PDA.owner = H.real_name @@ -1034,7 +935,10 @@ /obj/item/weapon/suppressor = 1, /obj/item/weapon/card/emag = 1, /obj/item/device/flashlight = 1, - /obj/item/weapon/implanter/storage = 1 + /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, it causes a bug + ) + implants = list( + /obj/item/weapon/implant/dust ) /datum/outfit/admin/spy/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) @@ -1046,9 +950,6 @@ if(istype(G)) G.name = "black gloves" - var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H) - D.implant(H) - var/obj/item/device/pda/PDA = H.wear_pda if(istype(PDA)) PDA.owner = H.real_name @@ -1147,6 +1048,9 @@ /obj/item/weapon/storage/box/survival = 1, /obj/item/device/flashlight = 1, ) + implants = list( + /obj/item/weapon/implant/dust + ) /datum/outfit/admin/dark_priest/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) . = ..() @@ -1163,5 +1067,3 @@ var/obj/item/device/radio/headset/R = H.l_ear if(istype(R)) R.flags |= NODROP - var/obj/item/weapon/implant/dust/D = new /obj/item/weapon/implant/dust(H) - D.implant(H) \ No newline at end of file diff --git a/code/game/jobs/job/central.dm b/code/game/jobs/job/central.dm index 64298b70fbe..21592d3b230 100644 --- a/code/game/jobs/job/central.dm +++ b/code/game/jobs/job/central.dm @@ -28,16 +28,14 @@ glasses = /obj/item/clothing/glasses/hud/security/sunglasses id = /obj/item/weapon/card/id/centcom pda = /obj/item/device/pda/centcom - backpack_contents = list( - /obj/item/weapon/gun/energy/pulse/pistol = 1, - /obj/item/weapon/implanter/dust = 1, - /obj/item/weapon/implanter/death_alarm = 1 + belt = /obj/item/weapon/gun/energy/pulse/pistol + backpack_contents = list() + implants = list( + /obj/item/weapon/implant/mindshield, + /obj/item/weapon/implant/dust ) - - implants = list(/obj/item/weapon/implant/mindshield) - backpack = /obj/item/weapon/storage/backpack/satchel - + box = /obj/item/weapon/storage/box/centcomofficer // CC Officials who lead ERTs, Death Squads, etc. @@ -61,22 +59,33 @@ /datum/outfit/job/ntspecops name = "Special Operations Officer" jobtype = /datum/job/ntspecops - - uniform = /obj/item/clothing/under/syndicate/combat + uniform = /obj/item/clothing/under/rank/centcom_commander suit = /obj/item/clothing/suit/space/deathsquad/officer + back = /obj/item/weapon/storage/backpack/security + belt = /obj/item/weapon/gun/energy/pulse/pistol/m1911 gloves = /obj/item/clothing/gloves/combat shoes = /obj/item/clothing/shoes/combat - head = /obj/item/clothing/head/beret/centcom/officer/navy + mask = /obj/item/clothing/mask/cigarette/cigar/cohiba + head = /obj/item/clothing/head/helmet/space/deathsquad/beret l_ear = /obj/item/device/radio/headset/centcom glasses = /obj/item/clothing/glasses/hud/security/sunglasses id = /obj/item/weapon/card/id/centcom pda = /obj/item/device/pda/centcom + r_pocket = /obj/item/weapon/storage/box/matches + box = /obj/item/weapon/storage/box/centcomofficer + backpack = /obj/item/weapon/storage/backpack/satchel backpack_contents = list( - /obj/item/weapon/implanter/dust = 1, - /obj/item/weapon/gun/energy/pulse/pistol/m1911 = 1, - /obj/item/weapon/implanter/death_alarm = 1 + /obj/item/clothing/shoes/magboots/advance = 1, + /obj/item/weapon/twohanded/dualsaber/red = 1, + /obj/item/weapon/storage/box/zipties = 1 ) - - implants = list(/obj/item/weapon/implant/mindshield) - - backpack = /obj/item/weapon/storage/backpack/satchel \ No newline at end of file + implants = list( + /obj/item/weapon/implant/mindshield, + /obj/item/weapon/implant/dust + ) + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/eyes/xray, + /obj/item/organ/internal/cyberimp/brain/anti_drop, + /obj/item/organ/internal/cyberimp/brain/anti_stun, + /obj/item/organ/internal/cyberimp/chest/nutriment/plus + ) \ No newline at end of file diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index cfb4e9418a9..a611735701a 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -142,8 +142,6 @@ shoes = /obj/item/clothing/shoes/black pda = /obj/item/device/pda - var/list/implants = null - var/backpack = /obj/item/weapon/storage/backpack var/satchel = /obj/item/weapon/storage/backpack/satchel_norm var/dufflebag = /obj/item/weapon/storage/backpack/duffel @@ -210,11 +208,6 @@ imprint_pda(H) - if(implants) - for(var/implant_type in implants) - var/obj/item/weapon/implant/I = new implant_type(H) - I.implant(H) - if(gear_leftovers.len) for(var/datum/gear/G in gear_leftovers) var/atom/placed_in = H.equip_or_collect(G.spawn_item(null, H.client.prefs.gear[G.display_name])) diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 594028e4f1f..b8fa1616154 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -806,6 +806,29 @@ return return ..() + +/obj/item/weapon/storage/box/centcomofficer/ + name = "officer kit" + +/obj/item/weapon/storage/box/centcomofficer/New() + ..() + contents = list() + sleep(1) + new /obj/item/clothing/mask/breath( src ) + new /obj/item/weapon/tank/emergency_oxygen/double/full( src ) + new /obj/item/device/flashlight/seclite( src ) + new /obj/item/weapon/kitchen/knife/combat( src ) + + new /obj/item/device/radio/centcom( src ) + new /obj/item/weapon/door_remote/omni( src ) + new /obj/item/weapon/implanter/death_alarm( src ) + + new /obj/item/weapon/reagent_containers/hypospray/combat/nanites( src ) + new /obj/item/weapon/pinpointer/advpinpointer( src ) + + return + + #undef NODESIGN #undef NANOTRASEN #undef SYNDI From 275c2ffc3c0844c9b112876314c1e7339d3275ff Mon Sep 17 00:00:00 2001 From: Kyep Date: Tue, 27 Mar 2018 17:08:42 -0700 Subject: [PATCH 2/7] syndi officers get red beret, lighter, cigar --- code/datums/outfits/outfit_admin.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 8b7801453c6..8421beed3d8 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -140,6 +140,8 @@ /datum/outfit/admin/syndicate/officer name = "Syndicate Officer" + head = /obj/item/clothing/head/beret + mask = /obj/item/clothing/mask/cigarette/cigar/havana belt = /obj/item/weapon/gun/projectile/automatic/pistol/deagle/camo l_ear = /obj/item/device/radio/headset/syndicate/alt l_pocket = /obj/item/weapon/pinpointer/advpinpointer @@ -150,7 +152,8 @@ /obj/item/weapon/reagent_containers/food/pill/initropidril = 1, /obj/item/weapon/reagent_containers/food/snacks/syndidonkpocket = 1, /obj/item/ammo_box/magazine/m50 = 2, - /obj/item/clothing/shoes/magboots/syndie/advance = 1 + /obj/item/clothing/shoes/magboots/syndie/advance = 1, + /obj/item/weapon/lighter/zippo/gonzofist = 1 ) id_icon = "commander" From 2e33456c208b9b9fa1cf63ef809cc81e74cf87e6 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 31 Mar 2018 19:01:21 -0700 Subject: [PATCH 3/7] fixes wiz boots, adds ancient vamp, archwiz, nt undercover ops --- code/datums/outfits/outfit_admin.dm | 126 +++++++++++++++++- code/game/gamemodes/vampire/vampire_powers.dm | 57 ++++++++ 2 files changed, 182 insertions(+), 1 deletion(-) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 8421beed3d8..031575b15db 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -259,6 +259,57 @@ if(istype(I)) apply_to_card(I, H, get_centcom_access("Nanotrasen Navy Representative"), "Nanotrasen Diplomat") + +/datum/outfit/admin/nt_undercover + name = "NT Undercover Operative" + // Disguised NT special forces, sent to quietly eliminate mutinous people in high positions (e.g: captain) + + uniform = /obj/item/clothing/under/chameleon + back = /obj/item/weapon/storage/backpack + belt = /obj/item/weapon/storage/belt/utility/full/multitool + gloves = /obj/item/clothing/gloves/combat + shoes = /obj/item/clothing/shoes/syndigaloshes + l_ear = /obj/item/device/radio/headset/heads/captain + id = /obj/item/weapon/card/id/syndicate + pda = /obj/item/device/pda + backpack_contents = list( + /obj/item/weapon/storage/box/engineer = 1, + /obj/item/device/flashlight = 1, + /obj/item/weapon/gun/projectile/automatic/proto = 1, // NT saber SMG + /obj/item/weapon/suppressor = 1, // silencer for SMG + /obj/item/ammo_box/magazine/smgm9mm = 3, // SMG ammo + /obj/item/weapon/door_remote/omni = 1, + /obj/item/weapon/implanter/mindshield = 1, // not implanted by default, as that would make them suspicious + /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug + ) + implants = list( + /obj/item/weapon/implant/dust + ) + cybernetic_implants = list( + /obj/item/organ/internal/cyberimp/eyes/hud/security, + /obj/item/organ/internal/cyberimp/eyes/xray, + /obj/item/organ/internal/cyberimp/brain/anti_drop, + /obj/item/organ/internal/cyberimp/brain/anti_stun, + /obj/item/organ/internal/cyberimp/chest/nutriment/plus + ) + +/datum/outfit/admin/nt_undercover/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/weapon/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_all_accesses(), "Civilian") + I.icon_state = "deathsquad" + + + var/obj/item/device/radio/R = H.l_ear + if(istype(R)) + R.name = "radio headset" + R.icon_state = "headset" + + /datum/outfit/admin/death_commando name = "NT Death Commando" @@ -723,6 +774,7 @@ name = "Wizard Hardsuit" suit = /obj/item/clothing/suit/space/hardsuit/wizard head = /obj/item/clothing/head/helmet/space/hardsuit/wizard + shoes = /obj/item/clothing/shoes/magboots /datum/outfit/admin/hardsuit/medical name = "Medical Hardsuit" @@ -938,7 +990,7 @@ /obj/item/weapon/suppressor = 1, /obj/item/weapon/card/emag = 1, /obj/item/device/flashlight = 1, - /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, it causes a bug + /obj/item/weapon/implanter/storage = 1 // do not auto-implant this, that causes a bug ) implants = list( /obj/item/weapon/implant/dust @@ -993,6 +1045,46 @@ if(istype(I)) apply_to_card(I, H, get_all_accesses(), "Dark Lord", "syndie") + +/datum/outfit/admin/ancient_vampire + name = "Ancient Vampire" + // Vampire with tons of blood, and ability to convert others into vampires. + + uniform = /obj/item/clothing/under/color/black + suit = /obj/item/clothing/suit/hooded/chaplain_hoodie + back = /obj/item/weapon/storage/backpack + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/black + l_ear = /obj/item/device/radio/headset/syndicate + id = /obj/item/weapon/card/id/syndicate + backpack_contents = list( + /obj/item/weapon/storage/box/survival = 1, + /obj/item/device/flashlight = 1, + ) + +/datum/outfit/admin/ancient_vampire/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + + var/obj/item/clothing/suit/hooded/chaplain_hoodie/C = H.wear_suit + if(istype(C)) + C.name = "ancient robes" + C.hood.name = "ancient hood" + + var/obj/item/weapon/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_all_accesses(), "Ancient", "syndie") + + H.make_vampire() + if(H.mind && H.mind.vampire) + H.mind.vampire.bloodtotal = 2500 + H.mind.vampire.bloodusable = 2500 + H.mind.vampire.add_ability(/obj/effect/proc_holder/spell/vampire/targetted/sire) + H.mind.vampire.check_vampire_upgrade() + + + /datum/outfit/admin/wizard uniform = /obj/item/clothing/under/color/lightpurple suit = /obj/item/clothing/suit/wizrobe @@ -1034,6 +1126,38 @@ shoes = /obj/item/clothing/shoes/sandal/marisa head = /obj/item/clothing/head/wizard/marisa +/datum/outfit/admin/wizard/arch + name = "Arch Wizard" + + suit = /obj/item/clothing/suit/wizrobe/magusred + head = /obj/item/clothing/head/wizard/magus + belt = /obj/item/weapon/storage/belt/wands/full + l_hand = null + backpack_contents = list( + /obj/item/weapon/storage/box/engineer = 1, + /obj/item/clothing/suit/space/hardsuit/wizard = 1, + /obj/item/clothing/head/helmet/space/hardsuit/wizard = 1, + /obj/item/clothing/shoes/magboots = 1, + /obj/item/weapon/kitchen/knife/ritual = 1, + /obj/item/clothing/suit/wizrobe/red = 1, + /obj/item/clothing/head/wizard/red = 1 + ) + +/datum/outfit/admin/wizard/arch/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) + . = ..() + if(visualsOnly) + return + //if(H.mind) + // H.mind.make_wizard() + var/obj/item/weapon/spellbook/B = H.r_hand + if(istype(B)) + B.owner = H // force-bind it so it can never be stolen, no matter what. + B.name = "Archwizard Spellbook" + B.uses = 50 + var/obj/item/weapon/card/id/I = H.wear_id + if(istype(I)) + apply_to_card(I, H, get_all_accesses(), "Arch Wizard") + /datum/outfit/admin/dark_priest name = "Dark Priest" diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index c78cc55676f..d54addd0b1d 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -349,6 +349,63 @@ to_chat(user, "You have successfully Enthralled [H]. If they refuse to do as you say just adminhelp.") add_logs(user, H, "vampire-thralled") + +/obj/effect/proc_holder/spell/vampire/targetted/sire + name = "Sire (300)" + desc = "You infect the mind of a human with one of your own kind, creating a new vampire." + gain_desc = "You have gained the sire ability which allows you to create new vampires." + action_icon_state = "vampire_enthrall" + required_blood = 300 + +/obj/effect/proc_holder/spell/vampire/targetted/sire/cast(list/targets, mob/user = usr) + for(var/mob/living/target in targets) + user.visible_message("[user] bites [target]'s neck!", "You bite [target]'s neck and begin the flow of power.") + to_chat(target, "You feel the tendrils of evil invade your mind.") + if(!ishuman(target)) + to_chat(user, "You can only sire humans.") + break + if(do_mob(user, target, 50)) + if(can_sire(user, target)) + handle_sire(user, target) + else + revert_cast(user) + to_chat(user, "You or your target either moved or you dont have enough usable blood.") + +/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/can_sire(mob/living/user, mob/living/carbon/C) + // Unlike can_enthrall, this proc allows usage on mindshielded and traitor targets. Deletes mindshield on use. + if(!C) + log_runtime(EXCEPTION("something bad happened on sireing a mob, attacker is [user] [user.key] \ref[user]"), user) + return 0 + if(!C.mind) + to_chat(user, "[C.name]'s mind is not there for you to sire.") + return 0 + if( ( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.vampire_enthralled )) + C.visible_message("[C] seems to resist the takeover!", "You feel a familiar sensation in your skull that quickly dissipates.") + return 0 + if(!affects(C)) + C.visible_message("[C] seems to resist the takeover!", "Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.") + return 0 + if(!ishuman(C)) + to_chat(user, "You can only sire humans!") + return 0 + return 1 + +/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/handle_sire(mob/living/user, mob/living/carbon/human/H as mob) + if(!istype(H)) + return 0 + for(var/obj/item/weapon/implant/mindshield/L in H) + if(L && L.implanted) + to_chat(H, "Your mental protection implant unexpectedly falters, dims, dies.") + qdel(L) + H.make_vampire() + ticker.mode.forge_vampire_objectives(H.mind) + ticker.mode.greet_vampire(H.mind) + ticker.mode.update_vampire_icons_added(H.mind) + to_chat(H, "You have been sireed by [user]. Follow their every command.") + to_chat(user, "You have successfully sireed [H].") + add_logs(user, H, "vampire-sired") + + /obj/effect/proc_holder/spell/vampire/self/cloak name = "Cloak of Darkness" desc = "Toggles whether you are currently cloaking yourself in darkness." From 99c3c38b195b2e2abd485b145cfc7c33bff448dc Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 1 Apr 2018 22:14:01 -0700 Subject: [PATCH 4/7] deletes ancient vampire, due to an icon bug, may re-add in another pr later --- code/datums/outfits/outfit_admin.dm | 39 ------------- code/game/gamemodes/vampire/vampire_powers.dm | 56 ------------------- 2 files changed, 95 deletions(-) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 031575b15db..5effbc8c336 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -1046,45 +1046,6 @@ apply_to_card(I, H, get_all_accesses(), "Dark Lord", "syndie") -/datum/outfit/admin/ancient_vampire - name = "Ancient Vampire" - // Vampire with tons of blood, and ability to convert others into vampires. - - uniform = /obj/item/clothing/under/color/black - suit = /obj/item/clothing/suit/hooded/chaplain_hoodie - back = /obj/item/weapon/storage/backpack - gloves = /obj/item/clothing/gloves/color/black - shoes = /obj/item/clothing/shoes/black - l_ear = /obj/item/device/radio/headset/syndicate - id = /obj/item/weapon/card/id/syndicate - backpack_contents = list( - /obj/item/weapon/storage/box/survival = 1, - /obj/item/device/flashlight = 1, - ) - -/datum/outfit/admin/ancient_vampire/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - . = ..() - if(visualsOnly) - return - - var/obj/item/clothing/suit/hooded/chaplain_hoodie/C = H.wear_suit - if(istype(C)) - C.name = "ancient robes" - C.hood.name = "ancient hood" - - var/obj/item/weapon/card/id/I = H.wear_id - if(istype(I)) - apply_to_card(I, H, get_all_accesses(), "Ancient", "syndie") - - H.make_vampire() - if(H.mind && H.mind.vampire) - H.mind.vampire.bloodtotal = 2500 - H.mind.vampire.bloodusable = 2500 - H.mind.vampire.add_ability(/obj/effect/proc_holder/spell/vampire/targetted/sire) - H.mind.vampire.check_vampire_upgrade() - - - /datum/outfit/admin/wizard uniform = /obj/item/clothing/under/color/lightpurple suit = /obj/item/clothing/suit/wizrobe diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm index d54addd0b1d..1b5921119db 100644 --- a/code/game/gamemodes/vampire/vampire_powers.dm +++ b/code/game/gamemodes/vampire/vampire_powers.dm @@ -350,62 +350,6 @@ add_logs(user, H, "vampire-thralled") -/obj/effect/proc_holder/spell/vampire/targetted/sire - name = "Sire (300)" - desc = "You infect the mind of a human with one of your own kind, creating a new vampire." - gain_desc = "You have gained the sire ability which allows you to create new vampires." - action_icon_state = "vampire_enthrall" - required_blood = 300 - -/obj/effect/proc_holder/spell/vampire/targetted/sire/cast(list/targets, mob/user = usr) - for(var/mob/living/target in targets) - user.visible_message("[user] bites [target]'s neck!", "You bite [target]'s neck and begin the flow of power.") - to_chat(target, "You feel the tendrils of evil invade your mind.") - if(!ishuman(target)) - to_chat(user, "You can only sire humans.") - break - if(do_mob(user, target, 50)) - if(can_sire(user, target)) - handle_sire(user, target) - else - revert_cast(user) - to_chat(user, "You or your target either moved or you dont have enough usable blood.") - -/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/can_sire(mob/living/user, mob/living/carbon/C) - // Unlike can_enthrall, this proc allows usage on mindshielded and traitor targets. Deletes mindshield on use. - if(!C) - log_runtime(EXCEPTION("something bad happened on sireing a mob, attacker is [user] [user.key] \ref[user]"), user) - return 0 - if(!C.mind) - to_chat(user, "[C.name]'s mind is not there for you to sire.") - return 0 - if( ( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.vampire_enthralled )) - C.visible_message("[C] seems to resist the takeover!", "You feel a familiar sensation in your skull that quickly dissipates.") - return 0 - if(!affects(C)) - C.visible_message("[C] seems to resist the takeover!", "Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.") - return 0 - if(!ishuman(C)) - to_chat(user, "You can only sire humans!") - return 0 - return 1 - -/obj/effect/proc_holder/spell/vampire/targetted/sire/proc/handle_sire(mob/living/user, mob/living/carbon/human/H as mob) - if(!istype(H)) - return 0 - for(var/obj/item/weapon/implant/mindshield/L in H) - if(L && L.implanted) - to_chat(H, "Your mental protection implant unexpectedly falters, dims, dies.") - qdel(L) - H.make_vampire() - ticker.mode.forge_vampire_objectives(H.mind) - ticker.mode.greet_vampire(H.mind) - ticker.mode.update_vampire_icons_added(H.mind) - to_chat(H, "You have been sireed by [user]. Follow their every command.") - to_chat(user, "You have successfully sireed [H].") - add_logs(user, H, "vampire-sired") - - /obj/effect/proc_holder/spell/vampire/self/cloak name = "Cloak of Darkness" desc = "Toggles whether you are currently cloaking yourself in darkness." From ca8bb33a5896e42ff80c60ce81368ae6cddfe1f7 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sat, 7 Apr 2018 14:01:48 -0700 Subject: [PATCH 5/7] Tiger requests --- code/datums/outfits/outfit_admin.dm | 2 -- .../objects/items/weapons/storage/boxes.dm | 20 +++++++++---------- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm index 5effbc8c336..ae98f702ac1 100644 --- a/code/datums/outfits/outfit_admin.dm +++ b/code/datums/outfits/outfit_admin.dm @@ -1108,8 +1108,6 @@ . = ..() if(visualsOnly) return - //if(H.mind) - // H.mind.make_wizard() var/obj/item/weapon/spellbook/B = H.r_hand if(istype(B)) B.owner = H // force-bind it so it can never be stolen, no matter what. diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index b8fa1616154..9f64cd6f999 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -807,24 +807,24 @@ return ..() -/obj/item/weapon/storage/box/centcomofficer/ +/obj/item/weapon/storage/box/centcomofficer name = "officer kit" /obj/item/weapon/storage/box/centcomofficer/New() ..() contents = list() sleep(1) - new /obj/item/clothing/mask/breath( src ) - new /obj/item/weapon/tank/emergency_oxygen/double/full( src ) - new /obj/item/device/flashlight/seclite( src ) - new /obj/item/weapon/kitchen/knife/combat( src ) + new /obj/item/clothing/mask/breath(src) + new /obj/item/weapon/tank/emergency_oxygen/double/full(src) + new /obj/item/device/flashlight/seclite(src) + new /obj/item/weapon/kitchen/knife/combat(src) - new /obj/item/device/radio/centcom( src ) - new /obj/item/weapon/door_remote/omni( src ) - new /obj/item/weapon/implanter/death_alarm( src ) + new /obj/item/device/radio/centcom(src) + new /obj/item/weapon/door_remote/omni(src) + new /obj/item/weapon/implanter/death_alarm(src) - new /obj/item/weapon/reagent_containers/hypospray/combat/nanites( src ) - new /obj/item/weapon/pinpointer/advpinpointer( src ) + new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src) + new /obj/item/weapon/pinpointer/advpinpointer(src) return From 2cb4e1f75c525fadcc02132620cedfd3b28594d5 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 8 Apr 2018 08:03:34 -0700 Subject: [PATCH 6/7] Fox requests --- code/datums/outfits/outfit.dm | 4 ++-- code/game/jobs/job/central.dm | 1 - code/game/objects/items/weapons/storage/boxes.dm | 3 --- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm index cdc44d39833..c84df419ebc 100644 --- a/code/datums/outfits/outfit.dm +++ b/code/datums/outfits/outfit.dm @@ -22,8 +22,8 @@ var/pda = null var/internals_slot = null //ID of slot containing a gas tank var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format - var/list/implants = list() - var/list/cybernetic_implants = list() + var/list/implants = null + var/list/cybernetic_implants = null /datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) diff --git a/code/game/jobs/job/central.dm b/code/game/jobs/job/central.dm index 21592d3b230..b07b2655f28 100644 --- a/code/game/jobs/job/central.dm +++ b/code/game/jobs/job/central.dm @@ -29,7 +29,6 @@ id = /obj/item/weapon/card/id/centcom pda = /obj/item/device/pda/centcom belt = /obj/item/weapon/gun/energy/pulse/pistol - backpack_contents = list() implants = list( /obj/item/weapon/implant/mindshield, /obj/item/weapon/implant/dust diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 9f64cd6f999..565f1c36fc4 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -813,7 +813,6 @@ /obj/item/weapon/storage/box/centcomofficer/New() ..() contents = list() - sleep(1) new /obj/item/clothing/mask/breath(src) new /obj/item/weapon/tank/emergency_oxygen/double/full(src) new /obj/item/device/flashlight/seclite(src) @@ -826,8 +825,6 @@ new /obj/item/weapon/reagent_containers/hypospray/combat/nanites(src) new /obj/item/weapon/pinpointer/advpinpointer(src) - return - #undef NODESIGN #undef NANOTRASEN From c1bf2382b8c0e3f7c20a41efacfcdc1c89e2c202 Mon Sep 17 00:00:00 2001 From: Kyep Date: Sun, 8 Apr 2018 08:05:31 -0700 Subject: [PATCH 7/7] squash --- code/datums/outfits/outfit.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm index c84df419ebc..2d67a5d71dd 100644 --- a/code/datums/outfits/outfit.dm +++ b/code/datums/outfits/outfit.dm @@ -91,9 +91,10 @@ var/number = backpack_contents[path] for(var/i = 0, i < number, i++) equip_item(H, path, slot_in_backpack) - for(var/path in implants) - var/obj/item/weapon/implant/I = new path(H) - I.implant(H) + if(implants) + for(var/path in implants) + var/obj/item/weapon/implant/I = new path(H) + I.implant(H) for(var/path in cybernetic_implants) var/obj/item/organ/internal/O = new path(H) O.insert(H)