From 0ec52d3f20280e5b7452d7ea99e7cad501ab0800 Mon Sep 17 00:00:00 2001 From: Killian <49700375+KillianKirilenko@users.noreply.github.com> Date: Mon, 22 Mar 2021 02:27:22 +0000 Subject: [PATCH 1/5] New ID Card Design --- code/datums/outfits/jobs/cargo.dm | 2 +- code/datums/outfits/jobs/civilian.dm | 17 ++- code/datums/outfits/jobs/engineering.dm | 2 +- code/datums/outfits/jobs/medical.dm | 8 +- code/datums/outfits/jobs/security.dm | 4 +- code/game/jobs/job/civilian.dm | 1 + code/game/machinery/computer/guestpass.dm | 8 +- .../objects/items/weapons/id cards/cards.dm | 47 +++++-- .../items/weapons/id cards/id_stacks.dm | 96 +++++++++++++ .../items/weapons/id cards/id_stacks_cit.dm | 92 +++++++++++++ .../weapons/id cards/id_stacks_deptname.dm | 92 +++++++++++++ .../items/weapons/id cards/station_ids.dm | 41 +++--- .../items/weapons/id cards/syndicate_ids.dm | 126 +++++++++++++++++- .../clothing/under/accessories/permits.dm | 8 +- icons/obj/card_cit.dmi | Bin 0 -> 12266 bytes icons/obj/card_new.dmi | Bin 0 -> 8704 bytes maps/southern_cross/job/outfits.dm | 16 +++ vorestation.dme | 4 + 18 files changed, 511 insertions(+), 53 deletions(-) create mode 100644 code/game/objects/items/weapons/id cards/id_stacks.dm create mode 100644 code/game/objects/items/weapons/id cards/id_stacks_cit.dm create mode 100644 code/game/objects/items/weapons/id cards/id_stacks_deptname.dm create mode 100644 icons/obj/card_cit.dmi create mode 100644 icons/obj/card_new.dmi diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm index 1b48efcb9d2..e7b8701a373 100644 --- a/code/datums/outfits/jobs/cargo.dm +++ b/code/datums/outfits/jobs/cargo.dm @@ -24,7 +24,7 @@ l_ear = /obj/item/device/radio/headset/headset_mine backpack = /obj/item/weapon/storage/backpack/industrial satchel_one = /obj/item/weapon/storage/backpack/satchel/eng - id_type = /obj/item/weapon/card/id/cargo + id_type = /obj/item/weapon/card/id/cargo/miner pda_type = /obj/item/device/pda/shaftminer backpack_contents = list(/obj/item/weapon/tool/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1) flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL diff --git a/code/datums/outfits/jobs/civilian.dm b/code/datums/outfits/jobs/civilian.dm index c8d588a145d..7d7d86fedc2 100644 --- a/code/datums/outfits/jobs/civilian.dm +++ b/code/datums/outfits/jobs/civilian.dm @@ -25,7 +25,7 @@ /decl/hierarchy/outfit/job/service/bartender name = OUTFIT_JOB_NAME("Bartender") uniform = /obj/item/clothing/under/rank/bartender - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/bartender pda_type = /obj/item/device/pda/bar backpack_contents = list(/obj/item/clothing/accessory/permit/gun/bar = 1) @@ -44,7 +44,7 @@ uniform = /obj/item/clothing/under/rank/chef suit = /obj/item/clothing/suit/chef head = /obj/item/clothing/head/chefhat - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/chef pda_type = /obj/item/device/pda/chef /decl/hierarchy/outfit/job/service/chef/cook @@ -68,13 +68,13 @@ backpack = /obj/item/weapon/storage/backpack/hydroponics satchel_one = /obj/item/weapon/storage/backpack/satchel/hyd messenger_bag = /obj/item/weapon/storage/backpack/messenger/hyd - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/botanist pda_type = /obj/item/device/pda/botanist /decl/hierarchy/outfit/job/service/janitor name = OUTFIT_JOB_NAME("Janitor") uniform = /obj/item/clothing/under/rank/janitor - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/janitor pda_type = /obj/item/device/pda/janitor /decl/hierarchy/outfit/job/librarian @@ -84,6 +84,9 @@ id_type = /obj/item/weapon/card/id/civilian pda_type = /obj/item/device/pda/librarian +/decl/hierarchy/outfit/job/librarian/journalist + id_type = /obj/item/weapon/card/id/civilian/journalist + /decl/hierarchy/outfit/job/internal_affairs_agent name = OUTFIT_JOB_NAME("Internal affairs agent") l_ear = /obj/item/device/radio/headset/ia @@ -92,14 +95,14 @@ shoes = /obj/item/clothing/shoes/brown glasses = /obj/item/clothing/glasses/sunglasses/big l_hand = /obj/item/weapon/clipboard - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/internal_affairs pda_type = /obj/item/device/pda/lawyer /decl/hierarchy/outfit/job/chaplain name = OUTFIT_JOB_NAME("Chaplain") uniform = /obj/item/clothing/under/rank/chaplain l_hand = /obj/item/weapon/storage/bible - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/chaplain pda_type = /obj/item/device/pda/chaplain /decl/hierarchy/outfit/job/explorer @@ -111,7 +114,7 @@ gloves = /obj/item/clothing/gloves/black l_ear = /obj/item/device/radio/headset id_slot = slot_wear_id - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/science/explorer pda_slot = slot_belt pda_type = /obj/item/device/pda/cargo // Brown looks more rugged r_pocket = /obj/item/device/gps/explorer diff --git a/code/datums/outfits/jobs/engineering.dm b/code/datums/outfits/jobs/engineering.dm index 3da60103c20..a2aba61a969 100644 --- a/code/datums/outfits/jobs/engineering.dm +++ b/code/datums/outfits/jobs/engineering.dm @@ -30,5 +30,5 @@ name = OUTFIT_JOB_NAME("Atmospheric technician") uniform = /obj/item/clothing/under/rank/atmospheric_technician belt = /obj/item/weapon/storage/belt/utility/atmostech - id_type = /obj/item/weapon/card/id/engineering + id_type = /obj/item/weapon/card/id/engineering/atmos pda_type = /obj/item/device/pda/atmos diff --git a/code/datums/outfits/jobs/medical.dm b/code/datums/outfits/jobs/medical.dm index ae996b2f081..6622d3b285b 100644 --- a/code/datums/outfits/jobs/medical.dm +++ b/code/datums/outfits/jobs/medical.dm @@ -65,7 +65,7 @@ suit = /obj/item/clothing/suit/storage/toggle/labcoat/chemist backpack = /obj/item/weapon/storage/backpack/chemistry satchel_one = /obj/item/weapon/storage/backpack/satchel/chem - id_type = /obj/item/weapon/card/id/medical + id_type = /obj/item/weapon/card/id/medical/chemist pda_type = /obj/item/device/pda/chemist /decl/hierarchy/outfit/job/medical/geneticist @@ -75,7 +75,7 @@ backpack = /obj/item/weapon/storage/backpack/genetics r_pocket = /obj/item/device/flashlight/pen satchel_one = /obj/item/weapon/storage/backpack/satchel/gen - id_type = /obj/item/weapon/card/id/medical + id_type = /obj/item/weapon/card/id/medical/geneticist pda_type = /obj/item/device/pda/geneticist /decl/hierarchy/outfit/job/medical/psychiatrist @@ -83,7 +83,7 @@ uniform = /obj/item/clothing/under/rank/psych suit = /obj/item/clothing/suit/storage/toggle/labcoat shoes = /obj/item/clothing/shoes/laceup - id_type = /obj/item/weapon/card/id/medical + id_type = /obj/item/weapon/card/id/medical/psych /decl/hierarchy/outfit/job/medical/psychiatrist/psychologist name = OUTFIT_JOB_NAME("Psychologist") @@ -97,7 +97,7 @@ l_hand = /obj/item/weapon/storage/firstaid/regular belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store - id_type = /obj/item/weapon/card/id/medical + id_type = /obj/item/weapon/card/id/medical/emt flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL /decl/hierarchy/outfit/job/medical/paramedic/emt diff --git a/code/datums/outfits/jobs/security.dm b/code/datums/outfits/jobs/security.dm index 8260d346b7d..9441a06da02 100644 --- a/code/datums/outfits/jobs/security.dm +++ b/code/datums/outfits/jobs/security.dm @@ -20,7 +20,7 @@ name = OUTFIT_JOB_NAME("Warden") uniform = /obj/item/clothing/under/rank/warden l_pocket = /obj/item/device/flash - id_type = /obj/item/weapon/card/id/security + id_type = /obj/item/weapon/card/id/security/warden pda_type = /obj/item/device/pda/warden /decl/hierarchy/outfit/job/security/detective @@ -31,7 +31,7 @@ l_pocket = /obj/item/weapon/flame/lighter/zippo shoes = /obj/item/clothing/shoes/laceup r_hand = /obj/item/weapon/storage/briefcase/crimekit - id_type = /obj/item/weapon/card/id/security + id_type = /obj/item/weapon/card/id/security/detective pda_type = /obj/item/device/pda/detective backpack = /obj/item/weapon/storage/backpack satchel_one = /obj/item/weapon/storage/backpack/satchel/norm diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 7acd36524ba..febbd265b29 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -205,6 +205,7 @@ // Librarian Alt Titles /datum/alt_title/journalist title = "Journalist" + title_outfit = /decl/hierarchy/outfit/job/librarian/journalist title_blurb = "The Journalist uses the Library as a base of operations, from which they can report the news and goings-on on the station with their camera." /datum/alt_title/writer diff --git a/code/game/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index 20fd6991a01..29925b20597 100644 --- a/code/game/machinery/computer/guestpass.dm +++ b/code/game/machinery/computer/guestpass.dm @@ -41,7 +41,7 @@ /obj/item/weapon/card/id/guest/attack_self(mob/living/user as mob) if(user.a_intent == I_HURT) - if(icon_state == "guest_invalid") + if(icon_state == "guest-invalid") to_chat(user, "This guest pass is already deactivated!") return @@ -49,7 +49,8 @@ if(confirm == "Yes") //rip guest pass \The [user] deactivates \the [src].") - icon_state = "guest_invalid" + icon_state = "guest-invalid" + update_icon() expiration_time = world.time expired = 1 return ..() @@ -66,7 +67,8 @@ /obj/item/weapon/card/id/guest/process() if(expired == 0 && world.time >= expiration_time) visible_message("\The [src] flashes a few times before turning red.") - icon_state = "guest_invalid" + icon_state = "guest-invalid" + update_icon() expired = 1 world.time = expiration_time return diff --git a/code/game/objects/items/weapons/id cards/cards.dm b/code/game/objects/items/weapons/id cards/cards.dm index fa56f6ccc10..649d9a3a34c 100644 --- a/code/game/objects/items/weapons/id cards/cards.dm +++ b/code/game/objects/items/weapons/id cards/cards.dm @@ -13,19 +13,48 @@ */ /obj/item/weapon/card name = "card" - desc = "Does card things." - icon = 'icons/obj/card.dmi' + desc = "A tiny plaque of plastic. Does card things." + icon = 'icons/obj/card_new.dmi' w_class = ITEMSIZE_TINY slot_flags = SLOT_EARS var/associated_account_number = 0 + var/list/initial_sprite_stack = list("") + var/base_icon = "icons/obj/card_new.dmi" + var/list/sprite_stack + var/list/files = list( ) drop_sound = 'sound/items/drop/card.ogg' pickup_sound = 'sound/items/pickup/card.ogg' +/obj/item/weapon/card/New() + . = ..() + reset_icon() + +/obj/item/weapon/card/proc/reset_icon() + sprite_stack = initial_sprite_stack + update_icon() + +/obj/item/weapon/card/update_icon() + if(!sprite_stack || !istype(sprite_stack) || sprite_stack == list("")) + icon = base_icon + icon_state = initial(icon_state) + + var/icon/I = null + for(var/iconstate in sprite_stack) + if(!iconstate) + iconstate = icon_state + if(I) + var/icon/IC = new(base_icon, iconstate) + I.Blend(IC, ICON_OVERLAY) + else + I = new/icon(base_icon, iconstate) + if(I) + icon = I + /obj/item/weapon/card/data - name = "data disk" - desc = "A disk of data." + name = "data card" + desc = "A solid-state storage card, used to back up or transfer information. What knowledge could it contain?" icon_state = "data" var/function = "storage" var/data = "null" @@ -35,20 +64,20 @@ pickup_sound = 'sound/items/pickup/disk.ogg' /obj/item/weapon/card/data/verb/label(t as text) - set name = "Label Disk" + set name = "Label Card" set category = "Object" set src in usr if (t) - src.name = text("data disk- '[]'", t) + src.name = text("data card- '[]'", t) else - src.name = "data disk" + src.name = "data card" src.add_fingerprint(usr) return /obj/item/weapon/card/data/clown name = "\proper the coordinates to clown planet" - icon_state = "data" + icon_state = "rainbow" item_state = "card-id" level = 2 desc = "This card contains coordinates to the fabled Clown Planet. Handle with care." @@ -62,7 +91,7 @@ /obj/item/weapon/card/emag_broken desc = "It's a card with a magnetic strip attached to some circuitry. It looks too busted to be used for anything but salvage." name = "broken cryptographic sequencer" - icon_state = "emag" + icon_state = "emag-spent" item_state = "card-id" origin_tech = list(TECH_MAGNET = 2, TECH_ILLEGAL = 2) diff --git a/code/game/objects/items/weapons/id cards/id_stacks.dm b/code/game/objects/items/weapons/id cards/id_stacks.dm new file mode 100644 index 00000000000..c073f6cba3f --- /dev/null +++ b/code/game/objects/items/weapons/id cards/id_stacks.dm @@ -0,0 +1,96 @@ +// This is a defines file for card sprite stacks. If a new card set comes in, this file can just be disabled and a new one made to match the new sprites. +// Generally, if the icon file is card_xxx.dmi, this filename should be sprite_stacks_xxx.dm +// Please make sure that only the relevant sprite_stacks_xxx.file is included, if more are made. + +/obj/item/weapon/card + icon = 'icons/obj/card_new.dmi' // These are redefined here so that changing sprites is as easy as clicking the checkbox. + base_icon = "icons/obj/card_new.dmi" + + // New sprite stacks can be defined here. You could theoretically change icon-states as well but right now this file compiles before station_ids.dm so those wouldn't be affected. + id + generic + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip") + centcom + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-gold") + vip + initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold") + ERT + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-red", "stripe-red") + silver + initial_sprite_stack = list("base-stamp-silver", "top-mime", "stamp-n-generic") + secretary + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n") + hop + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-white") + medical + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n") + chemist + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-orange") + geneticist + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple") + psych + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple") + emt + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-blue") + head + initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "stripe-gold") + sar + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n", "pips-medblu") + security + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n") + detective + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-brown") + warden + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-white") + head + initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "stripe-gold") + engineering + initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n") + atmos + initial_sprite_stack = list("base-stamp", "top-orange", "pips-medblu", "stamp-n") + head + initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "stripe-gold") + science + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n") + roboticist + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "pips-orange") + explorer + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n") + head + initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "stripe-gold") + pathfinder + initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-purple") //not a true head, no gold stripe for you + cargo + initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n") + miner + initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "pips-purple") + head + initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-gold") + civilian + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n") + chaplain + initial_sprite_stack = list("base-stamp-silver", "top-dark", "stamp-cross", "pips-white") + internal_affairs + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n") + botanist + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-brown") + bartender + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-dark") + chef + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-white") + janitor + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-purple") + journalist + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n") + clown + initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n") + mime + initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black") + pilot + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "pips-blue") + head + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "stripe-white") + syndicate + initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s") + officer + initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold") \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/id_stacks_cit.dm b/code/game/objects/items/weapons/id cards/id_stacks_cit.dm new file mode 100644 index 00000000000..a35b1febf98 --- /dev/null +++ b/code/game/objects/items/weapons/id cards/id_stacks_cit.dm @@ -0,0 +1,92 @@ +// This is a defines file for card sprite stacks. If a new card set comes in, this file can just be disabled and a new one made to match the new sprites. +// Generally, if the icon file is card_xxx.dmi, this filename should be sprite_stacks_xxx.dm +// Please make sure that only the relevant sprite_stacks_xxx.file is included, if more are made. + + + +/obj/item/weapon/card + icon = 'icons/obj/card_new.dmi' // These are redefined here so that changing sprites is as easy as clicking the checkbox. + base_icon = "icons/obj/card_new.dmi" + + // New sprite stacks can be defined here. You could theoretically change icon-states as well but right now this file compiles before station_ids.dm so those wouldn't be affected. + id + centcom + initial_sprite_stack = list("base-stamp", "top-blue", "dept-nanotrasen", "letter-n-command", "pips-gold") + vip + initial_sprite_stack = list("base-stamp-gold", "top-blue", "dept-vip-gold", "letter-n-command", "pips-gold") + ERT + initial_sprite_stack = list("base-stamp", "top-dark", "dept-nanotrasen", "letter-n-command") + silver + initial_sprite_stack = list("base-stamp-silver", "top-mime", "letter-n-generic") + secretary + initial_sprite_stack = list("base-stamp", "top-blue", "dept-secretary", "letter-n-command") + hop + initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-hop", "letter-n-command", "pips-gold") + medical + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "letter-n-medical") + chemist + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "letter-n-medical", "pips-engineering") + geneticist + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "letter-n-medical", "pips-science") + psych + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "letter-n-medical", "pips-science") + emt + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "letter-n-medical", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-medblu", "dept-medical", "letter-n-command", "pips-gold") + sar + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-exploration", "letter-n-command", "pips-command") + security + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "letter-n-security") + detective + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "letter-n-security", "pips-cargo") + warden + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "letter-n-security", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-red", "dept-security", "letter-n-command", "pips-gold") + engineering + initial_sprite_stack = list("base-stamp", "top-orange", "dept-engineering", "letter-n-engineering") + atmos + initial_sprite_stack = list("base-stamp", "top-orange", "dept-engineering", "pips-medical", "letter-n-engineering") + head + initial_sprite_stack = list("base-stamp-silver", "top-orange", "dept-engineering", "letter-n-command", "pips-gold") + science + initial_sprite_stack = list("base-stamp", "top-purple", "dept-science", "letter-n-science") + roboticist + initial_sprite_stack = list("base-stamp", "top-purple", "dept-science", "letter-n-science", "pips-engineering") + explorer + initial_sprite_stack = list("base-stamp", "top-blue", "dept-exploration", "letter-n-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-purple", "dept-science", "letter-n-command", "pips-gold") + pathfinder + initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-exploration", "letter-n-command", "pips-gold") + cargo + initial_sprite_stack = list("base-stamp", "top-brown", "dept-cargo", "letter-n-cargo") + miner + initial_sprite_stack = list("base-stamp", "top-brown", "dept-cargo", "letter-n-cargo", "pips-science") + head + initial_sprite_stack = list("base-stamp-silver", "top-brown", "dept-cargo", "letter-n-command", "pips-gold") + civilian + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "letter-n-civilian") + chaplain + initial_sprite_stack = list("base-stamp-silver", "top-dark", "letter-cross", "pips-white") + internal_affairs + initial_sprite_stack = list("base-stamp", "top-green", "dept-internal-affairs", "letter-n-command") + botanist + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "letter-n-civilian", "pips-cargo") + bartender + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "letter-n-civilian", "pips-dark") + chef + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "letter-n-civilian", "pips-white") + janitor + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "letter-n-civilian", "pips-science") + journalist + initial_sprite_stack = list("base-stamp", "top-green", "dept-press", "letter-n-civilian") + clown + initial_sprite_stack = list("base-stamp", "top-pink", "dept-clown", "letter-n-clown") + mime + initial_sprite_stack = list("base-stamp", "top-white", "letter-n-mime") + pilot + initial_sprite_stack = list("base-stamp", "top-generic", "dept-pilot", "letter-n-command", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-command", "letter-n-command", "pips-civilian") \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/id_stacks_deptname.dm b/code/game/objects/items/weapons/id cards/id_stacks_deptname.dm new file mode 100644 index 00000000000..bce7340ecc0 --- /dev/null +++ b/code/game/objects/items/weapons/id cards/id_stacks_deptname.dm @@ -0,0 +1,92 @@ +// This is a defines file for card sprite stacks. If a new card set comes in, this file can just be disabled and a new one made to match the new sprites. +// Generally, if the icon file is card_xxx.dmi, this filename should be sprite_stacks_xxx.dm +// Please make sure that only the relevant sprite_stacks_xxx.file is included, if more are made. + + + +/obj/item/weapon/card + icon = 'icons/obj/card_new.dmi' // These are redefined here so that changing sprites is as easy as clicking the checkbox. + base_icon = "icons/obj/card_new.dmi" + + // New sprite stacks can be defined here. You could theoretically change icon-states as well but right now this file compiles before station_ids.dm so those wouldn't be affected. + id + centcom + initial_sprite_stack = list("base-stamp", "top-blue", "dept-nanotrasen", "stamp-n", "pips-gold") + vip + initial_sprite_stack = list("base-stamp-gold", "dept-vip", "top-blue", "stamp-n", "pips-gold") + ERT + initial_sprite_stack = list("base-stamp", "top-dark", "dept-ert", "stamp-n") + silver + initial_sprite_stack = list("base-stamp-silver", "top-mime", "stamp-n-generic") + secretary + initial_sprite_stack = list("base-stamp", "top-blue", "dept-secretary", "stamp-n") + hop + initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-hop", "stamp-n", "pips-gold") + medical + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "stamp-n") + chemist + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "stamp-n", "pips-engineering") + geneticist + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "stamp-n", "pips-science") + psych + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "stamp-n", "pips-science") + emt + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-medical", "stamp-n", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-medblu", "dept-medical", "stamp-n", "pips-gold") + sar + initial_sprite_stack = list("base-stamp", "top-medblu", "dept-exploration", "stamp-n", "pips-command") + security + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "stamp-n") + detective + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "stamp-n", "pips-cargo") + warden + initial_sprite_stack = list("base-stamp", "top-red", "dept-security", "stamp-n", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-red", "dept-security", "stamp-n", "pips-gold") + engineering + initial_sprite_stack = list("base-stamp", "top-orange", "dept-engineering", "stamp-n") + atmos + initial_sprite_stack = list("base-stamp", "top-orange", "dept-engineering", "pips-medical", "stamp-n") + head + initial_sprite_stack = list("base-stamp-silver", "top-orange", "dept-engineering", "stamp-n", "pips-gold") + science + initial_sprite_stack = list("base-stamp", "top-purple", "dept-science", "stamp-n") + roboticist + initial_sprite_stack = list("base-stamp", "top-purple", "dept-science", "stamp-n", "pips-engineering") + explorer + initial_sprite_stack = list("base-stamp", "top-blue", "dept-exploration", "stamp-n") + head + initial_sprite_stack = list("base-stamp-silver", "top-purple", "dept-science", "stamp-n", "pips-gold") + pathfinder + initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-exploration", "stamp-n", "pips-gold") + cargo + initial_sprite_stack = list("base-stamp", "top-brown", "dept-cargo", "stamp-n") + miner + initial_sprite_stack = list("base-stamp", "top-brown", "dept-cargo", "stamp-n", "pips-science") + head + initial_sprite_stack = list("base-stamp-silver", "top-brown", "dept-cargo", "stamp-n", "pips-gold") + civilian + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "stamp-n") + chaplain + initial_sprite_stack = list("base-stamp-silver", "top-dark", "letter-cross", "pips-white") + internal_affairs + initial_sprite_stack = list("base-stamp", "top-green", "dept-internal-affairs", "stamp-n") + botanist + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "stamp-n", "pips-cargo") + bartender + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "stamp-n", "pips-dark") + chef + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "stamp-n", "pips-white") + janitor + initial_sprite_stack = list("base-stamp", "top-green", "dept-civilian", "stamp-n", "pips-science") + journalist + initial_sprite_stack = list("base-stamp", "top-green", "dept-press", "stamp-n") + clown + initial_sprite_stack = list("base-stamp", "top-pink", "dept-clown", "stamp-n") + mime + initial_sprite_stack = list("base-stamp", "top-white", "stamp-n-mime") + pilot + initial_sprite_stack = list("base-stamp", "top-generic", "dept-pilot", "stamp-n", "pips-command") + head + initial_sprite_stack = list("base-stamp-silver", "top-command", "stamp-n", "pips-civilian") \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index b47d65fc2c6..4f21a737c8e 100644 --- a/code/game/objects/items/weapons/id cards/station_ids.dm +++ b/code/game/objects/items/weapons/id cards/station_ids.dm @@ -1,7 +1,7 @@ /obj/item/weapon/card/id name = "identification card" desc = "A card used to provide ID and determine access across the station." - icon_state = "id" + icon_state = "generic-nt" item_state = "card-id" sprite_sheets = list( @@ -127,13 +127,13 @@ /obj/item/weapon/card/id/silver name = "identification card" desc = "A silver card which shows honour and dedication." - icon_state = "silver" + icon_state = "silver-id" item_state = "silver_id" /obj/item/weapon/card/id/gold name = "identification card" desc = "A golden card which shows power and might." - icon_state = "gold" + icon_state = "gold-id" item_state = "gold_id" preserve_item = 1 @@ -144,13 +144,14 @@ /obj/item/weapon/card/id/gold/captain/spare name = "\improper Site Manager's spare ID" desc = "The spare ID of the High Lord himself." + icon_state = "gold-id-alternate" registered_name = "Site Manager" /obj/item/weapon/card/id/synthetic name = "\improper Synthetic ID" desc = "Access module for NanoTrasen Synthetics" icon_state = "id-robot" - item_state = "tdgreen" + item_state = "idgreen" assignment = "Synthetic" /obj/item/weapon/card/id/synthetic/Initialize() @@ -172,7 +173,7 @@ /obj/item/weapon/card/id/centcom name = "\improper CentCom. ID" desc = "An ID straight from Central Command." - icon_state = "nanotrasen" + icon_state = "cc-id" registered_name = "Central Command" assignment = "General" @@ -187,7 +188,7 @@ /obj/item/weapon/card/id/centcom/ERT name = "\improper Emergency Response Team ID" assignment = "Emergency Response Team" - icon_state = "centcom" + icon_state = "ert-id" /obj/item/weapon/card/id/centcom/ERT/Initialize() . = ..() @@ -197,14 +198,13 @@ /obj/item/weapon/card/id/medical name = "identification card" desc = "A card issued to station medical staff." - icon_state = "med" + icon_state = "medical-id" primary_color = rgb(189,237,237) secondary_color = rgb(223,255,255) /obj/item/weapon/card/id/medical/head name = "identification card" desc = "A card which represents care and compassion." - icon_state = "medGold" primary_color = rgb(189,237,237) secondary_color = rgb(255,223,127) assignment = "Chief Medical Officer" @@ -213,14 +213,17 @@ /obj/item/weapon/card/id/security name = "identification card" desc = "A card issued to station security staff." - icon_state = "sec" + icon_state = "security-id" primary_color = rgb(189,47,0) secondary_color = rgb(223,127,95) +/obj/item/weapon/card/id/security/warden + assignment = "Warden" + rank = "Warden" + /obj/item/weapon/card/id/security/head name = "identification card" desc = "A card which represents honor and protection." - icon_state = "secGold" primary_color = rgb(189,47,0) secondary_color = rgb(255,223,127) assignment = "Head of Security" @@ -229,14 +232,17 @@ /obj/item/weapon/card/id/engineering name = "identification card" desc = "A card issued to station engineering staff." - icon_state = "eng" + icon_state = "engineering-id" primary_color = rgb(189,94,0) secondary_color = rgb(223,159,95) +/obj/item/weapon/card/id/engineering/atmos + assignment = "Atmospheric Technician" + rank = "Atmospheric Technician" + /obj/item/weapon/card/id/engineering/head name = "identification card" desc = "A card which represents creativity and ingenuity." - icon_state = "engGold" primary_color = rgb(189,94,0) secondary_color = rgb(255,223,127) assignment = "Chief Engineer" @@ -245,14 +251,13 @@ /obj/item/weapon/card/id/science name = "identification card" desc = "A card issued to station science staff." - icon_state = "sci" + icon_state = "science-id" primary_color = rgb(142,47,142) secondary_color = rgb(191,127,191) /obj/item/weapon/card/id/science/head name = "identification card" desc = "A card which represents knowledge and reasoning." - icon_state = "sciGold" primary_color = rgb(142,47,142) secondary_color = rgb(255,223,127) assignment = "Research Director" @@ -261,14 +266,13 @@ /obj/item/weapon/card/id/cargo name = "identification card" desc = "A card issued to station cargo staff." - icon_state = "cargo" + icon_state = "cargo-id" primary_color = rgb(142,94,0) secondary_color = rgb(191,159,95) /obj/item/weapon/card/id/cargo/head name = "identification card" desc = "A card which represents service and planning." - icon_state = "cargoGold" primary_color = rgb(142,94,0) secondary_color = rgb(255,223,127) assignment = "Quartermaster" @@ -281,7 +285,7 @@ /obj/item/weapon/card/id/civilian name = "identification card" desc = "A card issued to station civilian staff." - icon_state = "civ" + icon_state = "civilian-id" primary_color = rgb(0,94,142) secondary_color = rgb(95,159,191) assignment = "Civilian" @@ -290,13 +294,12 @@ /obj/item/weapon/card/id/civilian/head //This is not the HoP. There's no position that uses this right now. name = "identification card" desc = "A card which represents common sense and responsibility." - icon_state = "civGold" primary_color = rgb(0,94,142) secondary_color = rgb(255,223,127) /obj/item/weapon/card/id/external name = "identification card" desc = "An identification card of some sort. It does not look like it is issued by NT." - icon_state = "permit" + icon_state = "generic" primary_color = rgb(142,94,0) secondary_color = rgb(191,159,95) diff --git a/code/game/objects/items/weapons/id cards/syndicate_ids.dm b/code/game/objects/items/weapons/id cards/syndicate_ids.dm index afb85ecb7a5..8ef8894982a 100644 --- a/code/game/objects/items/weapons/id cards/syndicate_ids.dm +++ b/code/game/objects/items/weapons/id cards/syndicate_ids.dm @@ -1,6 +1,6 @@ /obj/item/weapon/card/id/syndicate name = "agent card" - icon_state = "syndicate" + icon_state = "generic-s" assignment = "Agent" origin_tech = list(TECH_ILLEGAL = 3) var/electronic_warfare = 1 @@ -62,16 +62,132 @@ registered_user.unregister(OBSERVER_EVENT_DESTROY, src) registered_user = null +<<<<<<< HEAD +======= +/obj/item/weapon/card/id/syndicate/CanUseTopic(mob/user) + if(user != registered_user) + return STATUS_CLOSE + return ..() + +/obj/item/weapon/card/id/syndicate/Topic(href, href_list, var/datum/topic_state/state) + if(..()) + return 1 + + var/user = usr + if(href_list["electronic_warfare"]) + electronic_warfare = text2num(href_list["electronic_warfare"]) + to_chat(user, "Electronic warfare [electronic_warfare ? "enabled" : "disabled"].") + else if(href_list["set"]) + switch(href_list["set"]) + if("Age") + var/new_age = input(user,"What age would you like to put on this card?","Agent Card Age", age) as null|num + if(!isnull(new_age) && CanUseTopic(user, state)) + if(new_age < 0) + age = initial(age) + else + age = new_age + to_chat(user, "Age has been set to '[age]'.") + . = 1 + if("Appearance") + var/datum/card_state/choice = input(user, "Select the appearance for this card.", "Agent Card Appearance") as null|anything in id_card_states() + if(choice && CanUseTopic(user, state)) + src.icon_state = choice.icon_state + src.item_state = choice.item_state + src.sprite_stack = choice.sprite_stack + update_icon() + to_chat(usr, "Appearance changed to [choice].") + . = 1 + if("Assignment") + var/new_job = sanitize(input(user,"What assignment would you like to put on this card?\nChanging assignment will not grant or remove any access levels.","Agent Card Assignment", assignment) as null|text) + if(!isnull(new_job) && CanUseTopic(user, state)) + src.assignment = new_job + to_chat(user, "Occupation changed to '[new_job]'.") + update_name() + . = 1 + if("Blood Type") + var/default = blood_type + if(default == initial(blood_type) && ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.dna) + default = H.dna.b_type + var/new_blood_type = sanitize(input(user,"What blood type would you like to be written on this card?","Agent Card Blood Type",default) as null|text) + if(!isnull(new_blood_type) && CanUseTopic(user, state)) + src.blood_type = new_blood_type + to_chat(user, "Blood type changed to '[new_blood_type]'.") + . = 1 + if("DNA Hash") + var/default = dna_hash + if(default == initial(dna_hash) && ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.dna) + default = H.dna.unique_enzymes + var/new_dna_hash = sanitize(input(user,"What DNA hash would you like to be written on this card?","Agent Card DNA Hash",default) as null|text) + if(!isnull(new_dna_hash) && CanUseTopic(user, state)) + src.dna_hash = new_dna_hash + to_chat(user, "DNA hash changed to '[new_dna_hash]'.") + . = 1 + if("Fingerprint Hash") + var/default = fingerprint_hash + if(default == initial(fingerprint_hash) && ishuman(user)) + var/mob/living/carbon/human/H = user + if(H.dna) + default = md5(H.dna.uni_identity) + var/new_fingerprint_hash = sanitize(input(user,"What fingerprint hash would you like to be written on this card?","Agent Card Fingerprint Hash",default) as null|text) + if(!isnull(new_fingerprint_hash) && CanUseTopic(user, state)) + src.fingerprint_hash = new_fingerprint_hash + to_chat(user, "Fingerprint hash changed to '[new_fingerprint_hash]'.") + . = 1 + if("Name") + var/new_name = sanitizeName(input(user,"What name would you like to put on this card?","Agent Card Name", registered_name) as null|text) + if(!isnull(new_name) && CanUseTopic(user, state)) + src.registered_name = new_name + update_name() + to_chat(user, "Name changed to '[new_name]'.") + . = 1 + if("Photo") + set_id_photo(user) + to_chat(user, "Photo changed.") + . = 1 + if("Sex") + var/new_sex = sanitize(input(user,"What sex would you like to put on this card?","Agent Card Sex", sex) as null|text) + if(!isnull(new_sex) && CanUseTopic(user, state)) + src.sex = new_sex + to_chat(user, "Sex changed to '[new_sex]'.") + . = 1 + if("Factory Reset") + if(alert("This will factory reset the card, including access and owner. Continue?", "Factory Reset", "No", "Yes") == "Yes" && CanUseTopic(user, state)) + age = initial(age) + access = syndicate_access.Copy() + assignment = initial(assignment) + blood_type = initial(blood_type) + dna_hash = initial(dna_hash) + electronic_warfare = initial(electronic_warfare) + fingerprint_hash = initial(fingerprint_hash) + icon_state = initial(icon_state) + sprite_stack = list("") + update_icon() + name = initial(name) + registered_name = initial(registered_name) + unset_registered_user() + sex = initial(sex) + to_chat(user, "All information has been deleted from \the [src].") + . = 1 + + // Always update the UI, or buttons will spin indefinitely + SSnanoui.update_uis(src) + +>>>>>>> 47d2c55... New ID Card Design (#7815) /var/global/list/id_card_states /proc/id_card_states() if(!id_card_states) id_card_states = list() for(var/path in typesof(/obj/item/weapon/card/id)) - var/obj/item/weapon/card/id/ID = path + var/obj/item/weapon/card/id/ID = new path() var/datum/card_state/CS = new() CS.icon_state = initial(ID.icon_state) CS.item_state = initial(ID.item_state) - CS.name = initial(ID.name) + " - " + initial(ID.icon_state) + CS.sprite_stack = ID.initial_sprite_stack + CS.name = initial(ID.name) id_card_states += CS id_card_states = dd_sortedObjectList(id_card_states) @@ -81,6 +197,7 @@ var/name var/icon_state var/item_state + var/sprite_stack /datum/card_state/dd_SortValue() return name @@ -89,5 +206,6 @@ name = "syndicate ID card" desc = "An ID straight from the Syndicate." registered_name = "Syndicate" - assignment = "Syndicate Overlord" + assignment = "Syndicate Commander" + icon_state = "syndicate-id" access = list(access_syndicate, access_external_airlocks) \ No newline at end of file diff --git a/code/modules/clothing/under/accessories/permits.dm b/code/modules/clothing/under/accessories/permits.dm index d7a5c3f396a..c89d9ee0198 100644 --- a/code/modules/clothing/under/accessories/permits.dm +++ b/code/modules/clothing/under/accessories/permits.dm @@ -3,8 +3,8 @@ /obj/item/clothing/accessory/permit name = "permit" desc = "A permit for something." - icon = 'icons/obj/card.dmi' - icon_state = "permit" + icon = 'icons/obj/card_new.dmi' + icon_state = "permit-generic" w_class = ITEMSIZE_TINY slot = ACCESSORY_SLOT_MEDAL var/owner = 0 //To prevent people from just renaming the thing if they steal it @@ -30,6 +30,7 @@ /obj/item/clothing/accessory/permit/gun name = "weapon permit" desc = "A card indicating that the owner is allowed to carry a firearm." + icon_state = "permit-security" /obj/item/clothing/accessory/permit/gun/bar name = "bar shotgun permit" @@ -38,8 +39,9 @@ /obj/item/clothing/accessory/permit/gun/planetside name = "planetside gun permit" desc = "A card indicating that the owner is allowed to carry a firearm while on the surface." + icon_state = "permit-science" /obj/item/clothing/accessory/permit/drone name = "drone identification card" desc = "A card issued by the EIO, indicating that the owner is a Drone Intelligence. Drones are mandated to carry this card within SolGov space, by law." - icon_state = "permit_drone" \ No newline at end of file + icon_state = "permit-drone" \ No newline at end of file diff --git a/icons/obj/card_cit.dmi b/icons/obj/card_cit.dmi new file mode 100644 index 0000000000000000000000000000000000000000..165c0c0a5ad7cd0a9b96667770bcd6297bc8b3db GIT binary patch literal 12266 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 JU3>8S{{g;wqRs#S literal 0 HcmV?d00001 diff --git a/maps/southern_cross/job/outfits.dm b/maps/southern_cross/job/outfits.dm index 56e62dd28d9..3994ff9be3f 100644 --- a/maps/southern_cross/job/outfits.dm +++ b/maps/southern_cross/job/outfits.dm @@ -13,8 +13,13 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_ear = /obj/item/device/radio/headset/explorer id_slot = slot_wear_id pda_slot = slot_l_store +<<<<<<< HEAD pda_type = /obj/item/device/pda/explorer //VORESTation Edit - Better Brown id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit +======= + pda_type = /obj/item/device/pda/cargo // Brown looks more rugged + id_type = /obj/item/weapon/card/id/science/explorer +>>>>>>> 47d2c55... New ID Card Design (#7815) id_pda_assignment = "Explorer" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) @@ -47,7 +52,12 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go uniform_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1 = 1) id_slot = slot_wear_id pda_slot = slot_belt +<<<<<<< HEAD pda_type = /obj/item/device/pda //VOREStation Edit - Civilian +======= + pda_type = /obj/item/device/pda/cargo // Brown looks more rugged + id_type = /obj/item/weapon/card/id/civilian/pilot +>>>>>>> 47d2c55... New ID Card Design (#7815) id_pda_assignment = "Pilot" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -60,6 +70,12 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_hand = /obj/item/weapon/storage/firstaid/regular belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store +<<<<<<< HEAD pda_type = /obj/item/device/pda/sar //VOREStation Add id_pda_assignment = "Field Medic" //VOREStation Edit flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL +======= + id_type = /obj/item/weapon/card/id/medical/sar + id_pda_assignment = "Search and Rescue" + flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL +>>>>>>> 47d2c55... New ID Card Design (#7815) diff --git a/vorestation.dme b/vorestation.dme index 9b8cb172396..aaaea8c1deb 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1306,7 +1306,11 @@ #include "code\game\objects\items\weapons\grenades\spawnergrenade_vr.dm" #include "code\game\objects\items\weapons\grenades\supermatter.dm" #include "code\game\objects\items\weapons\id cards\cards.dm" +<<<<<<< HEAD:vorestation.dme #include "code\game\objects\items\weapons\id cards\cards_vr.dm" +======= +#include "code\game\objects\items\weapons\id cards\id_stacks.dm" +>>>>>>> 47d2c55... New ID Card Design (#7815):polaris.dme #include "code\game\objects\items\weapons\id cards\station_ids.dm" #include "code\game\objects\items\weapons\id cards\station_ids_vr.dm" #include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" From bf28bee12d47ca18a432838319a2af54e319704e Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Mon, 22 Mar 2021 01:36:08 -0400 Subject: [PATCH 2/5] Update vorestation.dme --- vorestation.dme | 3 --- 1 file changed, 3 deletions(-) diff --git a/vorestation.dme b/vorestation.dme index aaaea8c1deb..c7811704c09 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1306,11 +1306,8 @@ #include "code\game\objects\items\weapons\grenades\spawnergrenade_vr.dm" #include "code\game\objects\items\weapons\grenades\supermatter.dm" #include "code\game\objects\items\weapons\id cards\cards.dm" -<<<<<<< HEAD:vorestation.dme #include "code\game\objects\items\weapons\id cards\cards_vr.dm" -======= #include "code\game\objects\items\weapons\id cards\id_stacks.dm" ->>>>>>> 47d2c55... New ID Card Design (#7815):polaris.dme #include "code\game\objects\items\weapons\id cards\station_ids.dm" #include "code\game\objects\items\weapons\id cards\station_ids_vr.dm" #include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" From a770ab4f7e321413e352f6600a13f937fa117f52 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Mon, 22 Mar 2021 01:37:43 -0400 Subject: [PATCH 3/5] Update syndicate_ids.dm --- .../items/weapons/id cards/syndicate_ids.dm | 117 +----------------- 1 file changed, 1 insertion(+), 116 deletions(-) diff --git a/code/game/objects/items/weapons/id cards/syndicate_ids.dm b/code/game/objects/items/weapons/id cards/syndicate_ids.dm index 8ef8894982a..01f6591104e 100644 --- a/code/game/objects/items/weapons/id cards/syndicate_ids.dm +++ b/code/game/objects/items/weapons/id cards/syndicate_ids.dm @@ -62,121 +62,6 @@ registered_user.unregister(OBSERVER_EVENT_DESTROY, src) registered_user = null -<<<<<<< HEAD -======= -/obj/item/weapon/card/id/syndicate/CanUseTopic(mob/user) - if(user != registered_user) - return STATUS_CLOSE - return ..() - -/obj/item/weapon/card/id/syndicate/Topic(href, href_list, var/datum/topic_state/state) - if(..()) - return 1 - - var/user = usr - if(href_list["electronic_warfare"]) - electronic_warfare = text2num(href_list["electronic_warfare"]) - to_chat(user, "Electronic warfare [electronic_warfare ? "enabled" : "disabled"].") - else if(href_list["set"]) - switch(href_list["set"]) - if("Age") - var/new_age = input(user,"What age would you like to put on this card?","Agent Card Age", age) as null|num - if(!isnull(new_age) && CanUseTopic(user, state)) - if(new_age < 0) - age = initial(age) - else - age = new_age - to_chat(user, "Age has been set to '[age]'.") - . = 1 - if("Appearance") - var/datum/card_state/choice = input(user, "Select the appearance for this card.", "Agent Card Appearance") as null|anything in id_card_states() - if(choice && CanUseTopic(user, state)) - src.icon_state = choice.icon_state - src.item_state = choice.item_state - src.sprite_stack = choice.sprite_stack - update_icon() - to_chat(usr, "Appearance changed to [choice].") - . = 1 - if("Assignment") - var/new_job = sanitize(input(user,"What assignment would you like to put on this card?\nChanging assignment will not grant or remove any access levels.","Agent Card Assignment", assignment) as null|text) - if(!isnull(new_job) && CanUseTopic(user, state)) - src.assignment = new_job - to_chat(user, "Occupation changed to '[new_job]'.") - update_name() - . = 1 - if("Blood Type") - var/default = blood_type - if(default == initial(blood_type) && ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna) - default = H.dna.b_type - var/new_blood_type = sanitize(input(user,"What blood type would you like to be written on this card?","Agent Card Blood Type",default) as null|text) - if(!isnull(new_blood_type) && CanUseTopic(user, state)) - src.blood_type = new_blood_type - to_chat(user, "Blood type changed to '[new_blood_type]'.") - . = 1 - if("DNA Hash") - var/default = dna_hash - if(default == initial(dna_hash) && ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna) - default = H.dna.unique_enzymes - var/new_dna_hash = sanitize(input(user,"What DNA hash would you like to be written on this card?","Agent Card DNA Hash",default) as null|text) - if(!isnull(new_dna_hash) && CanUseTopic(user, state)) - src.dna_hash = new_dna_hash - to_chat(user, "DNA hash changed to '[new_dna_hash]'.") - . = 1 - if("Fingerprint Hash") - var/default = fingerprint_hash - if(default == initial(fingerprint_hash) && ishuman(user)) - var/mob/living/carbon/human/H = user - if(H.dna) - default = md5(H.dna.uni_identity) - var/new_fingerprint_hash = sanitize(input(user,"What fingerprint hash would you like to be written on this card?","Agent Card Fingerprint Hash",default) as null|text) - if(!isnull(new_fingerprint_hash) && CanUseTopic(user, state)) - src.fingerprint_hash = new_fingerprint_hash - to_chat(user, "Fingerprint hash changed to '[new_fingerprint_hash]'.") - . = 1 - if("Name") - var/new_name = sanitizeName(input(user,"What name would you like to put on this card?","Agent Card Name", registered_name) as null|text) - if(!isnull(new_name) && CanUseTopic(user, state)) - src.registered_name = new_name - update_name() - to_chat(user, "Name changed to '[new_name]'.") - . = 1 - if("Photo") - set_id_photo(user) - to_chat(user, "Photo changed.") - . = 1 - if("Sex") - var/new_sex = sanitize(input(user,"What sex would you like to put on this card?","Agent Card Sex", sex) as null|text) - if(!isnull(new_sex) && CanUseTopic(user, state)) - src.sex = new_sex - to_chat(user, "Sex changed to '[new_sex]'.") - . = 1 - if("Factory Reset") - if(alert("This will factory reset the card, including access and owner. Continue?", "Factory Reset", "No", "Yes") == "Yes" && CanUseTopic(user, state)) - age = initial(age) - access = syndicate_access.Copy() - assignment = initial(assignment) - blood_type = initial(blood_type) - dna_hash = initial(dna_hash) - electronic_warfare = initial(electronic_warfare) - fingerprint_hash = initial(fingerprint_hash) - icon_state = initial(icon_state) - sprite_stack = list("") - update_icon() - name = initial(name) - registered_name = initial(registered_name) - unset_registered_user() - sex = initial(sex) - to_chat(user, "All information has been deleted from \the [src].") - . = 1 - - // Always update the UI, or buttons will spin indefinitely - SSnanoui.update_uis(src) - ->>>>>>> 47d2c55... New ID Card Design (#7815) /var/global/list/id_card_states /proc/id_card_states() if(!id_card_states) @@ -208,4 +93,4 @@ registered_name = "Syndicate" assignment = "Syndicate Commander" icon_state = "syndicate-id" - access = list(access_syndicate, access_external_airlocks) \ No newline at end of file + access = list(access_syndicate, access_external_airlocks) From 67dfb26b8150ce07a42468a994bac5c3dddd4f3c Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Mon, 22 Mar 2021 01:41:22 -0400 Subject: [PATCH 4/5] Update outfits.dm --- maps/southern_cross/job/outfits.dm | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/maps/southern_cross/job/outfits.dm b/maps/southern_cross/job/outfits.dm index 3994ff9be3f..9fa06c2fa99 100644 --- a/maps/southern_cross/job/outfits.dm +++ b/maps/southern_cross/job/outfits.dm @@ -13,13 +13,8 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_ear = /obj/item/device/radio/headset/explorer id_slot = slot_wear_id pda_slot = slot_l_store -<<<<<<< HEAD pda_type = /obj/item/device/pda/explorer //VORESTation Edit - Better Brown - id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit -======= - pda_type = /obj/item/device/pda/cargo // Brown looks more rugged id_type = /obj/item/weapon/card/id/science/explorer ->>>>>>> 47d2c55... New ID Card Design (#7815) id_pda_assignment = "Explorer" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) @@ -52,12 +47,8 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go uniform_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1 = 1) id_slot = slot_wear_id pda_slot = slot_belt -<<<<<<< HEAD pda_type = /obj/item/device/pda //VOREStation Edit - Civilian -======= - pda_type = /obj/item/device/pda/cargo // Brown looks more rugged id_type = /obj/item/weapon/card/id/civilian/pilot ->>>>>>> 47d2c55... New ID Card Design (#7815) id_pda_assignment = "Pilot" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -70,12 +61,7 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go l_hand = /obj/item/weapon/storage/firstaid/regular belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store -<<<<<<< HEAD + id_type = /obj/item/weapon/card/id/medical/sar pda_type = /obj/item/device/pda/sar //VOREStation Add id_pda_assignment = "Field Medic" //VOREStation Edit flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL -======= - id_type = /obj/item/weapon/card/id/medical/sar - id_pda_assignment = "Search and Rescue" - flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL ->>>>>>> 47d2c55... New ID Card Design (#7815) From 362a5129af2e90ae4451ceb79bdade028d842a7f Mon Sep 17 00:00:00 2001 From: Heroman Date: Tue, 23 Mar 2021 18:02:31 +1000 Subject: [PATCH 5/5] Adjusts IDs to match vorestation status quo --- code/datums/outfits/jobs/civilian.dm | 12 +- code/datums/outfits/jobs/civilian_vr.dm | 5 +- code/datums/outfits/jobs/command_vr.dm | 5 + code/datums/outfits/jobs/medical_vr.dm | 2 + code/datums/outfits/jobs/science_vr.dm | 8 ++ code/datums/outfits/jobs/special_vr.dm | 6 +- code/datums/outfits/outfit_vr.dm | 8 +- code/game/jobs/job/civilian_vr.dm | 2 +- .../items/weapons/id cards/id_stacks.dm | 6 +- .../items/weapons/id cards/id_stacks_vr.dm | 131 ++++++++++++++++++ maps/tether/tether_jobs.dm | 9 +- vorestation.dme | 10 +- 12 files changed, 182 insertions(+), 22 deletions(-) create mode 100644 code/datums/outfits/jobs/command_vr.dm create mode 100644 code/datums/outfits/jobs/medical_vr.dm create mode 100644 code/datums/outfits/jobs/science_vr.dm create mode 100644 code/game/objects/items/weapons/id cards/id_stacks_vr.dm diff --git a/code/datums/outfits/jobs/civilian.dm b/code/datums/outfits/jobs/civilian.dm index 7d7d86fedc2..cda81f977f9 100644 --- a/code/datums/outfits/jobs/civilian.dm +++ b/code/datums/outfits/jobs/civilian.dm @@ -1,6 +1,6 @@ /decl/hierarchy/outfit/job/assistant name = OUTFIT_JOB_NAME(USELESS_JOB) //VOREStation Edit - Visitor not Assistant - id_type = /obj/item/weapon/card/id/assistant + id_type = /obj/item/weapon/card/id/generic //VOREStation Edit /decl/hierarchy/outfit/job/assistant/visitor name = OUTFIT_JOB_NAME("Visitor") @@ -25,7 +25,7 @@ /decl/hierarchy/outfit/job/service/bartender name = OUTFIT_JOB_NAME("Bartender") uniform = /obj/item/clothing/under/rank/bartender - id_type = /obj/item/weapon/card/id/civilian/bartender + id_type = /obj/item/weapon/card/id/civilian/service/bartender //VOREStation Edit pda_type = /obj/item/device/pda/bar backpack_contents = list(/obj/item/clothing/accessory/permit/gun/bar = 1) @@ -44,7 +44,7 @@ uniform = /obj/item/clothing/under/rank/chef suit = /obj/item/clothing/suit/chef head = /obj/item/clothing/head/chefhat - id_type = /obj/item/weapon/card/id/civilian/chef + id_type = /obj/item/weapon/card/id/civilian/service/chef //VOREStation Edit pda_type = /obj/item/device/pda/chef /decl/hierarchy/outfit/job/service/chef/cook @@ -68,13 +68,13 @@ backpack = /obj/item/weapon/storage/backpack/hydroponics satchel_one = /obj/item/weapon/storage/backpack/satchel/hyd messenger_bag = /obj/item/weapon/storage/backpack/messenger/hyd - id_type = /obj/item/weapon/card/id/civilian/botanist + id_type = /obj/item/weapon/card/id/civilian/service/botanist //VOREStation Edit pda_type = /obj/item/device/pda/botanist /decl/hierarchy/outfit/job/service/janitor name = OUTFIT_JOB_NAME("Janitor") uniform = /obj/item/clothing/under/rank/janitor - id_type = /obj/item/weapon/card/id/civilian/janitor + id_type = /obj/item/weapon/card/id/civilian/service/janitor //VOREStation Edit pda_type = /obj/item/device/pda/janitor /decl/hierarchy/outfit/job/librarian @@ -114,7 +114,7 @@ gloves = /obj/item/clothing/gloves/black l_ear = /obj/item/device/radio/headset id_slot = slot_wear_id - id_type = /obj/item/weapon/card/id/science/explorer + id_type = /obj/item/weapon/card/id/exploration //VOREStation Edit pda_slot = slot_belt pda_type = /obj/item/device/pda/cargo // Brown looks more rugged r_pocket = /obj/item/device/gps/explorer diff --git a/code/datums/outfits/jobs/civilian_vr.dm b/code/datums/outfits/jobs/civilian_vr.dm index 7d39ae8c1b6..3acfffdfd15 100644 --- a/code/datums/outfits/jobs/civilian_vr.dm +++ b/code/datums/outfits/jobs/civilian_vr.dm @@ -1,5 +1,5 @@ /decl/hierarchy/outfit/job/assistant/worker - id_type = /obj/item/weapon/card/id/civilian + id_type = /obj/item/weapon/card/id/civilian/service /decl/hierarchy/outfit/job/assistant/cargo id_type = /obj/item/weapon/card/id/cargo @@ -16,3 +16,6 @@ /decl/hierarchy/outfit/job/assistant/officer id_type = /obj/item/weapon/card/id/security + +/decl/hierarchy/outfit/job/assistant/entertainer + id_type = /obj/item/weapon/card/id/civilian/entertainer diff --git a/code/datums/outfits/jobs/command_vr.dm b/code/datums/outfits/jobs/command_vr.dm new file mode 100644 index 00000000000..5e90123ffcc --- /dev/null +++ b/code/datums/outfits/jobs/command_vr.dm @@ -0,0 +1,5 @@ +/decl/hierarchy/outfit/job/hop + id_type = /obj/item/weapon/card/id/silver/hop + +/decl/hierarchy/outfit/job/secretary + id_type = /obj/item/weapon/card/id/silver/secretary \ No newline at end of file diff --git a/code/datums/outfits/jobs/medical_vr.dm b/code/datums/outfits/jobs/medical_vr.dm new file mode 100644 index 00000000000..e9b2c1a0d02 --- /dev/null +++ b/code/datums/outfits/jobs/medical_vr.dm @@ -0,0 +1,2 @@ +/decl/hierarchy/outfit/job/medical/doctor/virologist + id_type = /obj/item/weapon/card/id/medical/virologist \ No newline at end of file diff --git a/code/datums/outfits/jobs/science_vr.dm b/code/datums/outfits/jobs/science_vr.dm new file mode 100644 index 00000000000..cf0e9e4b3a6 --- /dev/null +++ b/code/datums/outfits/jobs/science_vr.dm @@ -0,0 +1,8 @@ +/decl/hierarchy/outfit/job/science/xenobiologist + id_type = /obj/item/weapon/card/id/science/xenobiologist + +/decl/hierarchy/outfit/job/science/xenobotanist + name = OUTFIT_JOB_NAME("Xenobotanist") + uniform = /obj/item/clothing/under/rank/scientist + id_type = /obj/item/weapon/card/id/science/xenobotanist + suit = /obj/item/clothing/suit/storage/toggle/labcoat/science \ No newline at end of file diff --git a/code/datums/outfits/jobs/special_vr.dm b/code/datums/outfits/jobs/special_vr.dm index 010010291dd..6dea4e4cfa9 100644 --- a/code/datums/outfits/jobs/special_vr.dm +++ b/code/datums/outfits/jobs/special_vr.dm @@ -19,7 +19,7 @@ back = /obj/item/weapon/storage/backpack/satchel id_type = /obj/item/weapon/card/id/centcom/ERT pda_type = /obj/item/device/pda/centcom - + post_equip(var/mob/living/carbon/human/H) ..() ert.add_antagonist(H.mind) @@ -31,6 +31,7 @@ shoes = /obj/item/clothing/shoes/clown_shoes mask = /obj/item/clothing/mask/gas/clown_hat backpack_contents = list(/obj/item/weapon/stamp/clown = 1, /obj/item/weapon/bikehorn = 1) + id_type = /obj/item/weapon/card/id/civilian/clown pda_type = /obj/item/device/pda/clown flags = 0 @@ -41,8 +42,9 @@ head = /obj/item/clothing/head/soft/mime mask = /obj/item/clothing/mask/gas/mime backpack_contents = list(/obj/item/weapon/pen/crayon/mime = 1) + id_type = /obj/item/weapon/card/id/civilian/mime pda_type = /obj/item/device/pda/mime - + post_equip(var/mob/living/carbon/human/H) ..() if(H.backbag == 1) diff --git a/code/datums/outfits/outfit_vr.dm b/code/datums/outfits/outfit_vr.dm index 455d84c90e1..12eb237a0ca 100644 --- a/code/datums/outfits/outfit_vr.dm +++ b/code/datums/outfits/outfit_vr.dm @@ -116,7 +116,7 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go id_slot = slot_wear_id pda_slot = slot_l_store pda_type = /obj/item/device/pda/explorer - id_type = /obj/item/weapon/card/id/explorer + id_type = /obj/item/weapon/card/id/exploration id_pda_assignment = "Explorer" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -132,6 +132,7 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go id_slot = slot_wear_id pda_slot = slot_belt pda_type = /obj/item/device/pda + id_type = /obj/item/weapon/card/id/civilian/pilot id_pda_assignment = "Pilot" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -145,6 +146,7 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go belt = /obj/item/weapon/storage/belt/medical/emt pda_slot = slot_l_store pda_type = /obj/item/device/pda/sar + id_type = /obj/item/weapon/card/id/exploration/fm id_pda_assignment = "Field Medic" flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -156,10 +158,10 @@ Keep outfits simple. Spawn with basic uniforms and minimal gear. Gear instead go id_slot = slot_wear_id pda_slot = slot_l_store pda_type = /obj/item/device/pda/pathfinder - id_type = /obj/item/weapon/card/id/explorer/head + id_type = /obj/item/weapon/card/id/exploration/head id_pda_assignment = "Pathfinder" flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL|OUTFIT_COMPREHENSIVE_SURVIVAL /decl/hierarchy/outfit/job/assistant/explorer - id_type = /obj/item/weapon/card/id/explorer + id_type = /obj/item/weapon/card/id/exploration flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL diff --git a/code/game/jobs/job/civilian_vr.dm b/code/game/jobs/job/civilian_vr.dm index beb4f477f89..3d5e9cb95e3 100644 --- a/code/game/jobs/job/civilian_vr.dm +++ b/code/game/jobs/job/civilian_vr.dm @@ -194,7 +194,7 @@ minimal_access = list(access_entertainment) pto_type = PTO_CIVILIAN - outfit_type = /decl/hierarchy/outfit/job/assistant + outfit_type = /decl/hierarchy/outfit/job/assistant/entertainer job_description = "An entertainer does just that, entertains! Put on plays, play music, sing songs, tell stories, or read your favorite fanfic." alt_titles = list("Performer" = /datum/alt_title/performer, "Musician" = /datum/alt_title/musician, "Stagehand" = /datum/alt_title/stagehand, "Actor" = /datum/alt_title/actor, "Dancer" = /datum/alt_title/dancer, "Singer" = /datum/alt_title/singer, diff --git a/code/game/objects/items/weapons/id cards/id_stacks.dm b/code/game/objects/items/weapons/id cards/id_stacks.dm index c073f6cba3f..4567cfe0381 100644 --- a/code/game/objects/items/weapons/id cards/id_stacks.dm +++ b/code/game/objects/items/weapons/id cards/id_stacks.dm @@ -7,6 +7,7 @@ base_icon = "icons/obj/card_new.dmi" // New sprite stacks can be defined here. You could theoretically change icon-states as well but right now this file compiles before station_ids.dm so those wouldn't be affected. + /* id generic initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip") @@ -77,7 +78,7 @@ bartender initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-dark") chef - initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-white") + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-white") janitor initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-purple") journalist @@ -93,4 +94,5 @@ syndicate initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s") officer - initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold") \ No newline at end of file + initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold") + */ // VOREStation Removal - defined in id_stacks_vr.dm \ No newline at end of file diff --git a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm new file mode 100644 index 00000000000..12442a353f3 --- /dev/null +++ b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm @@ -0,0 +1,131 @@ +/obj/item/weapon/card + + id + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n") + generic + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip") + centcom + initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold") + vip + initial_sprite_stack = list("base-stamp-gold", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold") + ERT + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red") + medic + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu") + commander + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold") + engineer + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange") + janitor + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple") + silver + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n") + secretary + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n") + hop + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold") + medical + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n") + chemist + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange") + geneticist + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple") + psych + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown") + virologist + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green") + emt + initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue") + head + initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold") + /* + sar + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n", "pips-medblu") + */ + security + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n") + detective + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown") + warden + initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white") + head + initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold") + engineering + initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n") + atmos + initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n") + head + initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold") + science + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n") + roboticist + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown") + xenobiologist + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange") + xenobotanist + initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green") + /* + explorer + initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n") + */ + head + initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold") + /* + pathfinder + initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-purple") //not a true head, no gold stripe for you + */ + cargo + initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n") + miner + initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple") + head + initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white") + civilian + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n") + chaplain + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white") + internal_affairs + initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black") + service + botanist + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen") + bartender + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black") + chef + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white") + janitor + initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple") + journalist + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red") + clown + initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n") + mime + initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black") + entertainer + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown") + pilot + initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-pink") + head + initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold") + exploration + initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n") + fm + initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n", "stripe-medblu") + head + initial_sprite_stack = list("base-stamp-silver", "top-pink", "stamp-n", "pips-white") + talon + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette") + doctor + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu") + engineer + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange") + officer + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red") + pilot + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple") + captain + initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold") + syndicate + initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s") + officer + initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold") \ No newline at end of file diff --git a/maps/tether/tether_jobs.dm b/maps/tether/tether_jobs.dm index 89ea143f504..7c671ac58ad 100644 --- a/maps/tether/tether_jobs.dm +++ b/maps/tether/tether_jobs.dm @@ -136,7 +136,7 @@ /decl/hierarchy/outfit/job/talon_captain name = OUTFIT_JOB_NAME("Talon Captain") - id_type = /obj/item/weapon/card/id/gold + id_type = /obj/item/weapon/card/id/talon/captain id_slot = slot_wear_id pda_type = null @@ -151,6 +151,7 @@ /decl/hierarchy/outfit/job/talon_pilot name = OUTFIT_JOB_NAME("Talon Pilot") + id_type = /obj/item/weapon/card/id/talon/pilot id_slot = slot_wear_id pda_type = null flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -167,7 +168,7 @@ name = OUTFIT_JOB_NAME("Talon Doctor") hierarchy_type = /decl/hierarchy/outfit/job - id_type = /obj/item/weapon/card/id/medical + id_type = /obj/item/weapon/card/id/talon/doctor id_slot = slot_wear_id pda_type = null @@ -185,7 +186,7 @@ name = OUTFIT_JOB_NAME("Talon Security") hierarchy_type = /decl/hierarchy/outfit/job - id_type = /obj/item/weapon/card/id/security + id_type = /obj/item/weapon/card/id/talon/officer id_slot = slot_wear_id pda_type = null backpack_contents = list(/obj/item/weapon/handcuffs = 1) @@ -203,7 +204,7 @@ name = OUTFIT_JOB_NAME("Talon Engineer") hierarchy_type = /decl/hierarchy/outfit/job - id_type = /obj/item/weapon/card/id/engineering + id_type = /obj/item/weapon/card/id/talon/engineer id_slot = slot_wear_id pda_type = null flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL diff --git a/vorestation.dme b/vorestation.dme index c7811704c09..c437a9a9fdd 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -394,11 +394,14 @@ #include "code\datums\outfits\jobs\civilian.dm" #include "code\datums\outfits\jobs\civilian_vr.dm" #include "code\datums\outfits\jobs\command.dm" +#include "code\datums\outfits\jobs\command_vr.dm" #include "code\datums\outfits\jobs\engineering.dm" #include "code\datums\outfits\jobs\job.dm" #include "code\datums\outfits\jobs\medical.dm" +#include "code\datums\outfits\jobs\medical_vr.dm" #include "code\datums\outfits\jobs\misc.dm" #include "code\datums\outfits\jobs\science.dm" +#include "code\datums\outfits\jobs\science_vr.dm" #include "code\datums\outfits\jobs\security.dm" #include "code\datums\outfits\jobs\special_vr.dm" #include "code\datums\outfits\military\fleet.dm" @@ -1308,6 +1311,7 @@ #include "code\game\objects\items\weapons\id cards\cards.dm" #include "code\game\objects\items\weapons\id cards\cards_vr.dm" #include "code\game\objects\items\weapons\id cards\id_stacks.dm" +#include "code\game\objects\items\weapons\id cards\id_stacks_vr.dm" #include "code\game\objects\items\weapons\id cards\station_ids.dm" #include "code\game\objects\items\weapons\id cards\station_ids_vr.dm" #include "code\game\objects\items\weapons\id cards\syndicate_ids.dm" @@ -1707,9 +1711,9 @@ #include "code\modules\ai\ai_holder_targeting_vr.dm" #include "code\modules\ai\interfaces.dm" #include "code\modules\ai\say_list.dm" -#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm" -#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_vr.dm" -#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm" +#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm" +#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai_vr.dm" +#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm" #include "code\modules\alarm\alarm.dm" #include "code\modules\alarm\alarm_handler.dm" #include "code\modules\alarm\atmosphere_alarm.dm"