diff --git a/code/controllers/subsystems/ticker.dm b/code/controllers/subsystems/ticker.dm index 15b676f029..b7e712fafe 100644 --- a/code/controllers/subsystems/ticker.dm +++ b/code/controllers/subsystems/ticker.dm @@ -477,6 +477,11 @@ var/global/datum/controller/subsystem/ticker/ticker for (var/mob/living/silicon/robot/robo in mob_list) + if(istype(robo, /mob/living/silicon/robot/platform)) + var/mob/living/silicon/robot/platform/tank = robo + if(!tank.has_had_player) + continue + if(istype(robo,/mob/living/silicon/robot/drone) && !istype(robo,/mob/living/silicon/robot/drone/swarm)) dronecount++ continue diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e68f75e911..48c08f9328 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -329,7 +329,7 @@ var/global/list/PDA_Manifest = list() if(H.mind && !player_is_antag(H.mind, only_offstation_roles = 1)) var/assignment = GetAssignment(H) var/hidden - var/datum/job/J = SSjob.get_job(assignment) + var/datum/job/J = SSjob.get_job(H.mind.assigned_role) hidden = J?.offmap_spawn /* Note: Due to cached_character_icon, a number of emergent properties occur due to the initialization diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm index 1b48efcb9d..e7b8701a37 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 c8d588a145..cda81f977f 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 + 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 + 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 + 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 + id_type = /obj/item/weapon/card/id/civilian/service/janitor //VOREStation Edit 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/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 7d39ae8c1b..3acfffdfd1 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 0000000000..5e90123ffc --- /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/engineering.dm b/code/datums/outfits/jobs/engineering.dm index 3da60103c2..a2aba61a96 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 ae996b2f08..6622d3b285 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/medical_vr.dm b/code/datums/outfits/jobs/medical_vr.dm new file mode 100644 index 0000000000..e9b2c1a0d0 --- /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 0000000000..cf0e9e4b3a --- /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/security.dm b/code/datums/outfits/jobs/security.dm index 8260d346b7..9441a06da0 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/datums/outfits/jobs/special_vr.dm b/code/datums/outfits/jobs/special_vr.dm index 010010291d..6dea4e4cfa 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 7f978fafb0..c41b5673aa 100644 --- a/code/datums/outfits/outfit_vr.dm +++ b/code/datums/outfits/outfit_vr.dm @@ -116,21 +116,23 @@ 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 /decl/hierarchy/outfit/job/pilot name = OUTFIT_JOB_NAME("Pilot") shoes = /obj/item/clothing/shoes/black - uniform = /obj/item/clothing/under/rank/pilot1 + uniform = /obj/item/clothing/under/rank/pilot1/no_webbing suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot gloves = /obj/item/clothing/gloves/fingerless glasses = /obj/item/clothing/glasses/fakesunglasses/aviator l_ear = /obj/item/device/radio/headset/pilot/alt + uniform_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1 = 1) 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 @@ -144,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 @@ -155,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/gamemodes/technomancer/instability.dm b/code/game/gamemodes/technomancer/instability.dm index 6dc3f2d52b..8b4e1f2767 100644 --- a/code/game/gamemodes/technomancer/instability.dm +++ b/code/game/gamemodes/technomancer/instability.dm @@ -273,6 +273,7 @@ var/outgoing_instability = (amount) * ( 1 / (radius**2) ) L.receive_radiated_instability(outgoing_instability) + src.adjust_instability(-outgoing_instability) //This should prevent feedback loops // This should only be used for EXTERNAL sources of instability, such as from someone or something glowing. /mob/living/proc/receive_radiated_instability(amount) diff --git a/code/game/gamemodes/technomancer/spells/illusion.dm b/code/game/gamemodes/technomancer/spells/illusion.dm index 7405c43520..2d33f6e926 100644 --- a/code/game/gamemodes/technomancer/spells/illusion.dm +++ b/code/game/gamemodes/technomancer/spells/illusion.dm @@ -33,6 +33,7 @@ if(pay_energy(500)) illusion = new(T) illusion.copy_appearance(copied) + illusion.copy_overlays(copied, TRUE) to_chat(user, "An illusion of \the [copied] is made on \the [T].") user << 'sound/effects/pop.ogg' return 1 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index f84e191b54..78798a5add 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/jobs/job/civilian_vr.dm b/code/game/jobs/job/civilian_vr.dm index beb4f477f8..3d5e9cb95e 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/machinery/computer/guestpass.dm b/code/game/machinery/computer/guestpass.dm index d8523d2b45..216310a99a 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/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 2a36b5db6c..5b4305844e 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -394,6 +394,8 @@ //Drop all items into the pod. for(var/obj/item/W in to_despawn) + if(istype(W,/obj/item/organ)) + continue to_despawn.drop_from_inventory(W) W.forceMove(src) diff --git a/code/game/objects/items/devices/communicator/helper.dm b/code/game/objects/items/devices/communicator/helper.dm index b406100456..9048adc2db 100644 --- a/code/game/objects/items/devices/communicator/helper.dm +++ b/code/game/objects/items/devices/communicator/helper.dm @@ -40,7 +40,7 @@ var/list/feeds = list() for(var/datum/feed_channel/channel in news_network.network_channels) var/list/messages = list() - if(!channel.censored) + if(!channel.censored && channel.channel_name != "Vir News Network") //Do not load the 'IC news' channel as it is simply too long. var/index = 0 for(var/datum/feed_message/FM in channel.messages) index++ diff --git a/code/game/objects/items/weapons/id cards/cards.dm b/code/game/objects/items/weapons/id cards/cards.dm index fa56f6ccc1..649d9a3a34 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 0000000000..4567cfe038 --- /dev/null +++ b/code/game/objects/items/weapons/id cards/id_stacks.dm @@ -0,0 +1,98 @@ +// 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") + */ // 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_cit.dm b/code/game/objects/items/weapons/id cards/id_stacks_cit.dm new file mode 100644 index 0000000000..a35b1febf9 --- /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 0000000000..bce7340ecc --- /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/id_stacks_vr.dm b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm new file mode 100644 index 0000000000..12442a353f --- /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/code/game/objects/items/weapons/id cards/station_ids.dm b/code/game/objects/items/weapons/id cards/station_ids.dm index b47d65fc2c..4f21a737c8 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 afb85ecb7a..01f6591104 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 @@ -67,11 +67,12 @@ 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 +82,7 @@ var/name var/icon_state var/item_state + var/sprite_stack /datum/card_state/dd_SortValue() return name @@ -89,5 +91,6 @@ name = "syndicate ID card" desc = "An ID straight from the Syndicate." registered_name = "Syndicate" - assignment = "Syndicate Overlord" - access = list(access_syndicate, access_external_airlocks) \ No newline at end of file + assignment = "Syndicate Commander" + icon_state = "syndicate-id" + access = list(access_syndicate, access_external_airlocks) diff --git a/code/modules/clothing/under/accessories/permits.dm b/code/modules/clothing/under/accessories/permits.dm index d7a5c3f396..c89d9ee019 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/code/modules/lore_codex/news_data/main.dm b/code/modules/lore_codex/news_data/main.dm index 107e91ad3b..3a89f5cf6e 100644 --- a/code/modules/lore_codex/news_data/main.dm +++ b/code/modules/lore_codex/news_data/main.dm @@ -4,6 +4,8 @@ region. Each is labeled by date of publication and title. This list is self-updating, and from time to time the publisher will push new \ articles. You are encouraged to check back frequently." children = list( + /datum/lore/codex/page/article103, + /datum/lore/codex/page/article102, /datum/lore/codex/page/article101, /datum/lore/codex/page/article100, /datum/lore/codex/page/article99, @@ -1126,4 +1128,30 @@

\ Tachyons are a naturally occurring particle present in varying density which form the primary mechanism for bluespace drive operation. In simple terms, the higher the density of tachyons, the more efficiently starship engines are capable of operating. Low-density regions such as the Rarkajar Rift have long posed a challenge to interstellar trade, and the expansion of such regions could prove devastating to galactic unity.\

\ - FTL industry leaders Focal Point Energistics have already announced 'immediate investigation' into the GSA's findings after taking a blow on the stock exchange, and have guaranteed a 'commitment to future-proofing' in all forthcoming products." \ No newline at end of file + FTL industry leaders Focal Point Energistics have already announced 'immediate investigation' into the GSA's findings after taking a blow on the stock exchange, and have guaranteed a 'commitment to future-proofing' in all forthcoming products." + +/datum/lore/codex/page/article102 + name = "02/15/65 - NanoTrasen Announces First NERC Members" + data = "Following Saturday's internal election, NanoTrasen Vir has elected the first five members for its new Employee Representation Committee. These individuals are expected to hold the position for one month:\ +

\ + For the New Reykjavik Head Office Iraluq James, a remote personnel operative, won the position on a platform of employee morale, team-building and employee-employer conflict resolution.\ +

\ + On the NCS Northern Star, NanoTrasen's main colony station in Vir Victoria Bell, a cybernetic chef and hardshell operator won her place with promises of increased regulatory transparency and clarity, including the publication of an in-house magazine.\ +

\ + At the NMB Gullstrand medical science center in Kalmar, a close race between top doctors was upset by the election of a station security commander, Wish Elara-Voight who promises 'improvements to the safety and security of NanoTrasen facilities with a focus on enforcing current SoP and CorpReg policies and placing new procedure in the handbooks.'\ +

\ + The waypoint station NLS Southern Cross selected a cybernetic Unathi candidate, researcher Dr. Haven Rasikl to represent them on the basis of encouraging interdepartmental cooperation and communication.\ +

\ + Finally, the Ekmanshalvo Fabrication Plant has selected fabrication programmer Terazon Norddahl, who promises to push for overhauls and modernization of the company's internal transport and support systems, including shuttle scheduling." + +/datum/lore/codex/page/article103 + name = "03/10/65 - GSA Confirms Presence Of 'New' Deep-Space Threat" + data = "This morning the Galactic Survey Administration released confirmation that a previously unknown deep-space dwelling species was indeed responsible for the disappearance of five Extraplanar Discovery Division vessels early last year, three of which have returned adrift over the past several days. The species, colloquially dubbed the 'Bluespace Bugs' after initial reports from the recovered EDD ships, are believed to be capable of manipulating matter in a manner reminicent of experimental bluespace technology.\ +

\ + The three 'returning' vessels are said to have been 'significantly off-course', with their points of galactic re-entry differing vastly from their initial points of egress, and final programmed return routes. Each ship having departed on routes from Sol, the SCG-E Bungaree was reported adrift by Almach Protectorate officials close to the Vounna system, the SCG-E Ketumati severely damaged on a collision course with the Erebus star, in the Nyx system, and the SCG-E Mag Mell collided with the garden world of Sif, in Vir. The Gagarin and Xu Fu remain unaccounted for, but due to the proximity of final contact, their disappearance has also been ascribed to the 'bugs'.\ +

\ + Investigation of the recovered vessels each indicated signs of a brief struggle, always following reports of unexplained equipment disappearances and equipment failure. No crew, or crew remains have been found, with the exception of a single unidentified human thumb aboard the Bungaree.\ +

\ + Additionally, each ship has been identified as having undergone some degree of material alteration, with elements ranging from hull plating to crew belongings having taken on a crystaline form dubbed 'Magmellite' after the ship most thoroughly 'reconstructed'. It is unclear whether the mineral is somehow secreted by the alien species, or merely a product of the same environment.\ +

\ + GSA sources have stated that there is no current evidence that the insectoid creatures - identified only from scattered descriptions left from missing EDD personnel - are in any way sapient or malicious, and the lost vessels are thought to have merely disturbed a scattered array of endemic populations far from the galactic plane. Precisely why the species has only been encountered in the past year, and now all at once, is not yet known." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 5bd80a97dd..446c1b1582 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1650,7 +1650,5 @@ ..() -/mob/living/carbon/human/reduce_cuff_time() - if(istype(gloves, /obj/item/clothing/gloves/gauntlets/rig)) - return 2 - return ..() +/mob/living/carbon/human/get_mob_riding_slots() + return list(back, head, wear_suit) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 6f6ebba1f8..23aa2a57dc 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -528,3 +528,6 @@ amount *= water_damage_mod if(amount > 0) H.adjustToxLoss(amount) + +/datum/species/proc/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary) + return FALSE diff --git a/code/modules/mob/living/carbon/human/species/station/seromi.dm b/code/modules/mob/living/carbon/human/species/station/seromi.dm index 2d35ba13bc..18448521ce 100644 --- a/code/modules/mob/living/carbon/human/species/station/seromi.dm +++ b/code/modules/mob/living/carbon/human/species/station/seromi.dm @@ -146,11 +146,73 @@ /datum/mob_descriptor/build = -3 ) + var/static/list/flight_bodyparts = list( + BP_L_ARM, + BP_R_ARM, + BP_L_HAND, + BP_R_HAND + ) + var/static/list/flight_suit_blacklisted_types = list( + /obj/item/clothing/suit/space, + /obj/item/clothing/suit/straight_jacket + ) + /datum/species/teshari/equip_survival_gear(var/mob/living/carbon/human/H) ..() H.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal(H),slot_shoes) -//YW EDIT: loneliness +/datum/species/teshari/handle_falling(mob/living/carbon/human/H, atom/hit_atom, damage_min, damage_max, silent, planetary) + + // Tesh can glide to save themselves from some falls. Basejumping bird + // without parachute, or falling bird without free wings goes splat. + + // Are we landing from orbit, or handcuffed/unconscious/tied to something? + if(planetary || !istype(H) || H.incapacitated()) + return ..() + + // Are we landing on a turf? Not sure how this could not be the case, but let's be safe. + var/turf/landing = get_turf(hit_atom) + if(!istype(landing)) + return ..() + + if(H.buckled) + if(!silent) + to_chat(H, SPAN_WARNING("You try to spread your wings to slow your fall, but \the [H.buckled] weighs you down!")) + return ..() + + // Is there enough air to flap against? + var/datum/gas_mixture/environment = landing.return_air() + if(!environment || environment.return_pressure() < (ONE_ATMOSPHERE * 0.75)) + if(!silent) + to_chat(H, SPAN_WARNING("You spread your wings to slow your fall, but the air is too thin!")) + return ..() + + // Are we wearing a space suit? + if(H.wear_suit) + for(var/blacklisted_type in flight_suit_blacklisted_types) + if(istype(H.wear_suit, blacklisted_type)) + if(!silent) + to_chat(H, SPAN_WARNING("You try to spread your wings to slow your fall, but \the [H.wear_suit] is in the way!")) + return ..() + + // Do we have working wings? + for(var/bp in flight_bodyparts) + var/obj/item/organ/external/E = H.organs_by_name[bp] + if(!istype(E) || !E.is_usable() || E.is_broken() || E.is_stump()) + if(!silent) + to_chat(H, SPAN_WARNING("You try to spread your wings to slow your fall, but they won't hold your weight!")) + return ..() + + // Handled! + if(!silent) + to_chat(H, SPAN_NOTICE("You catch the air in your wings and greatly slow your fall.")) + H.visible_message(SPAN_NOTICE("\The [H] glides down from above, landing safely.")) + H.Stun(2) + playsound(H, "rustle", 25, 1) + return TRUE + + +//YW EDIT Start: loneliness /datum/species/teshari/handle_environment_special(var/mob/living/carbon/human/H) spawn(0) // If they're dead or unconcious they're a bit beyond this kind of thing. @@ -184,7 +246,6 @@ H.next_loneliness_time = world.time+500 return - for(var/obj/item/weapon/holder/micro/M in range(1, H)) if(H.loneliness_stage > 0) H.loneliness_stage -= 4 @@ -245,3 +306,4 @@ return SEE_SELF|SEE_MOBS else return SEE_SELF +//YW EDIT End \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm b/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm new file mode 100644 index 0000000000..be1783d9df --- /dev/null +++ b/code/modules/mob/living/carbon/human/species/station/xenochimera_trait_vr.dm @@ -0,0 +1,41 @@ +/* +** For now, these are just neutral traits for Xenochimera only to take. +** These are only traits that they should reasonably be able to evolve to acquire themselves. +** I won't add the resistances though because those are kinda lame for a 'chimera to take! +*/ +/datum/trait/weaver/xenochimera + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Weaver" + desc = "You've evolved your body to produce silk that you can fashion into articles of clothing and other objects." + cost = 0 + custom_only = FALSE + +/datum/trait/hardfeet/xenochimera + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Hard Feet" + desc = "Your body has adapted to make your feet immune to glass shards, whether by developing hooves, chitin, or just horrible callous." + cost = 0 + custom_only = FALSE + +// Why put this on Xenochimera of all species? I have no idea, but someone may be enough of a lunatic to take it. +/datum/trait/neural_hypersensitivity/xenochimera + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Neural Hypersensitivity" + desc = "Despite your evolutionary efforts, you are unusually sensitive to pain. \ + Given your species' typical reactions to pain, this can only end well for you!" + cost = 0 + custom_only = FALSE + +/datum/trait/melee_attack_fangs/xenochimera + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Sharp Melee & Numbing Fangs" + desc = "Your hunting instincts manifest in earnest! You have grown numbing fangs alongside your naturally grown hunting weapons." + cost = 0 + custom_only = FALSE + +/datum/trait/snowwalker/xenochimera + allowed_species = list(SPECIES_XENOCHIMERA) + name = "Xenochimera: Snow Walker" + desc = "You've adapted to traversing snowy terrain. Snow does not slow you down!" + cost = 0 + custom_only = FALSE diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 010a170d1b..6bb5c382e5 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -848,8 +848,12 @@ if(lying) density = 0 - if(l_hand) unEquip(l_hand) - if(r_hand) unEquip(r_hand) + if(l_hand) + unEquip(l_hand) + if(r_hand) + unEquip(r_hand) + for(var/obj/item/weapon/holder/holder in get_mob_riding_slots()) + unEquip(holder) update_water() // Submerges the mob. else density = initial(density) @@ -877,6 +881,10 @@ return canmove +// Mob holders in these slots will be spilled if the mob goes prone. +/mob/living/proc/get_mob_riding_slots() + return list(back) + // Adds overlays for specific modifiers. // You'll have to add your own implementation for non-humans currently, just override this proc. /mob/living/proc/update_modifier_visuals() diff --git a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm index 79279af6dd..f777fe7996 100644 --- a/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm +++ b/code/modules/mob/living/silicon/robot/subtypes/thinktank/_thinktank.dm @@ -33,6 +33,7 @@ mob_push_flags = HEAVY mob_size = MOB_LARGE + var/has_had_player = FALSE var/const/platform_respawn_time = 3 MINUTES var/tmp/last_recharge_state = FALSE @@ -54,6 +55,10 @@ /obj/machinery/power/supermatter ) +/mob/living/silicon/robot/platform/Login() + . = ..() + has_had_player = TRUE + /mob/living/silicon/robot/platform/SetName(pickedName) . = ..() if(mind) diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm index 69486a061d..b20bdbb4cd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm +++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm @@ -33,7 +33,7 @@ appearance = thing_to_copy.appearance copying = thing_to_copy density = thing_to_copy.density // So you can't bump into objects that aren't supposed to be dense. - catalogue_data = thing_to_copy.catalogue_data.Copy() + catalogue_data = thing_to_copy.get_catalogue_data() catalogue_delay = thing_to_copy.catalogue_delay return TRUE diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index ce8e1f6f8a..40447a5a4b 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -501,8 +501,10 @@ adjustBruteLoss(rand(damage_min, damage_max)) Weaken(4) updatehealth() - return - return + +/mob/living/carbon/human/fall_impact(atom/hit_atom, damage_min, damage_max, silent, planetary) + if(!species?.handle_falling(src, hit_atom, damage_min, damage_max, silent, planetary)) + ..() //Using /atom/movable instead of /obj/item because I'm not sure what all humans can pick up or wear /atom/movable diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 00512aa264..b3ff9c2837 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -821,6 +821,7 @@ set category = "Preferences" set desc = "Switch sharp/fuzzy scaling for current mob." appearance_flags ^= PIXEL_SCALE + fuzzy = !fuzzy /mob/living/examine(mob/user, infix, suffix) . = ..() diff --git a/icons/_nanomaps/tether_nanomap_z2.png b/icons/_nanomaps/tether_nanomap_z2.png index 653034b4b5..f2fd28d38c 100644 Binary files a/icons/_nanomaps/tether_nanomap_z2.png and b/icons/_nanomaps/tether_nanomap_z2.png differ diff --git a/icons/obj/card_cit.dmi b/icons/obj/card_cit.dmi new file mode 100644 index 0000000000..165c0c0a5a Binary files /dev/null and b/icons/obj/card_cit.dmi differ diff --git a/icons/obj/card_new.dmi b/icons/obj/card_new.dmi new file mode 100644 index 0000000000..f5b658ccd0 Binary files /dev/null and b/icons/obj/card_new.dmi differ diff --git a/maps/southern_cross/job/outfits.dm b/maps/southern_cross/job/outfits.dm index 56e62dd28d..9fa06c2fa9 100644 --- a/maps/southern_cross/job/outfits.dm +++ b/maps/southern_cross/job/outfits.dm @@ -14,7 +14,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 //VORESTation Edit - Better Brown - id_type = /obj/item/weapon/card/id/explorer //VOREStation Edit + id_type = /obj/item/weapon/card/id/science/explorer id_pda_assignment = "Explorer" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL backpack_contents = list(/obj/item/clothing/accessory/permit/gun/planetside = 1) @@ -48,6 +48,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 //VOREStation Edit - Civilian + id_type = /obj/item/weapon/card/id/civilian/pilot id_pda_assignment = "Pilot" flags = OUTFIT_HAS_BACKPACK|OUTFIT_COMPREHENSIVE_SURVIVAL @@ -60,6 +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 + 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 diff --git a/maps/southern_cross/southern_cross_overrides.dm b/maps/southern_cross/southern_cross_overrides.dm index 6525446b1f..71dd04da38 100644 --- a/maps/southern_cross/southern_cross_overrides.dm +++ b/maps/southern_cross/southern_cross_overrides.dm @@ -7,3 +7,4 @@ /obj/item/weapon/card/id/platform/Initialize() . = ..() access |= access_explorer + access |= access_pilot diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index f2f6d1fcd5..990928201c 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -725,6 +725,9 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "abh" = ( @@ -3591,9 +3594,6 @@ dir = 4; icon_state = "pipe-c" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 1; d2 = 2; @@ -3602,6 +3602,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1; + icon_state = "map-scrubbers" + }, /turf/simulated/floor/tiled, /area/rnd/hardstorage) "afQ" = ( @@ -3785,6 +3789,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/hardstorage) "ago" = ( @@ -3933,6 +3938,7 @@ d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/hardstorage) "agF" = ( @@ -5763,6 +5769,9 @@ d2 = 4; icon_state = "1-4" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "ajK" = ( @@ -10519,9 +10528,6 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 6 }, @@ -10533,6 +10539,9 @@ d2 = 8; icon_state = "4-8" }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "arJ" = ( @@ -10694,6 +10703,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "arV" = ( @@ -10824,6 +10834,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "ask" = ( @@ -11070,6 +11081,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "asE" = ( @@ -11277,6 +11289,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "asZ" = ( @@ -11607,6 +11620,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "atF" = ( @@ -11923,6 +11937,7 @@ /obj/machinery/light{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "auj" = ( @@ -12176,6 +12191,7 @@ /obj/effect/floor_decal/steeldecal/steel_decals7{ dir = 5 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "auG" = ( @@ -12339,7 +12355,6 @@ d2 = 2; icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 @@ -12347,6 +12362,9 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 9 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "auZ" = ( @@ -12370,6 +12388,9 @@ req_access = list(47) }, /obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled/steel_grid, /area/hallway/lower/first_west) "avb" = ( @@ -12379,6 +12400,10 @@ /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + pixel_y = 0 + }, /turf/simulated/floor/tiled, /area/hallway/lower/first_west) "avc" = ( @@ -17245,6 +17270,9 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "aCo" = ( @@ -17258,6 +17286,9 @@ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals7, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "aCp" = ( @@ -17640,6 +17671,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/hallway) "aDd" = ( @@ -17766,6 +17798,9 @@ /obj/effect/floor_decal/corner/mauve/bordercorner{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/rnd/hallway) "aDs" = ( @@ -17934,6 +17969,7 @@ /area/engineering/atmos) "aDJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/hallway) "aDK" = ( @@ -37087,9 +37123,6 @@ /turf/simulated/floor/tiled, /area/tether/surfacebase/surface_one_hall) "uOe" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/cable/green{ d1 = 4; d2 = 8; @@ -37101,6 +37134,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /turf/simulated/floor/tiled, /area/rnd/hallway) "uOA" = ( diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm index 617fb42766..ad2bb5668a 100644 --- a/maps/tether/tether-02-surface2.dmm +++ b/maps/tether/tether-02-surface2.dmm @@ -13548,7 +13548,7 @@ /obj/random/tech_supply, /obj/random/maintenance/research, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "avR" = ( /obj/structure/cable/green{ d1 = 4; @@ -20541,7 +20541,7 @@ /obj/structure/railing, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aKk" = ( /obj/structure/cable/green{ d1 = 4; @@ -23452,7 +23452,7 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aPw" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 9 @@ -23466,7 +23466,7 @@ "aPx" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aPy" = ( /obj/structure/closet/crate, /obj/random/maintenance/clean, @@ -23526,9 +23526,11 @@ /obj/structure/railing{ dir = 4 }, -/obj/structure/railing, +/obj/machinery/light/small{ + dir = 8 + }, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aPE" = ( /obj/effect/floor_decal/borderfloor{ dir = 8 @@ -23668,7 +23670,7 @@ /obj/effect/floor_decal/rust, /obj/random/junk, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aPV" = ( /obj/structure/railing{ dir = 8 @@ -23678,7 +23680,7 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aPW" = ( /obj/machinery/light{ dir = 8 @@ -23861,8 +23863,16 @@ /turf/simulated/floor, /area/maintenance/lower/south) "aQq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aQr" = ( /obj/structure/frame{ anchored = 1 @@ -24218,34 +24228,31 @@ }, /turf/simulated/floor/tiled/techfloor, /area/maintenance/lower/south) -"aRe" = ( -/turf/simulated/wall{ - can_open = 1 - }, -/area/tether/surfacebase/outside/outside2) "aRf" = ( -/obj/structure/catwalk, /obj/effect/floor_decal/rust, /obj/random/drinkbottle, +/obj/structure/railing{ + dir = 4 + }, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRg" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRh" = ( /obj/structure/table/rack/holorack, /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRi" = ( /obj/structure/catwalk, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRj" = ( /obj/random/tool, /turf/simulated/floor/plating, @@ -24256,7 +24263,7 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRl" = ( /obj/machinery/requests_console{ department = "Science"; @@ -24464,7 +24471,7 @@ /obj/item/weapon/storage/mre/random, /obj/item/weapon/storage/mre/random, /turf/simulated/floor/plating, -/area/tether/surfacebase/outside/outside2) +/area/maintenance/lower/public_garden_maintenence/upper) "aRC" = ( /obj/effect/floor_decal/corner_techfloor_grid{ dir = 5 @@ -39967,7 +39974,7 @@ akX akX adt adt -aQq +adt adt adt adt @@ -40109,7 +40116,7 @@ aui akX akX adt -aQq +adt adt adt azs @@ -40251,7 +40258,7 @@ ass avi akX adt -aQq +adt adt adt azs @@ -40393,7 +40400,7 @@ ars avj akX adt -aQq +adt adt adt azs @@ -40534,9 +40541,9 @@ atH auj akX akX -aac -aRe -aac +ajV +ajV +ajV adt azs swg @@ -40678,8 +40685,8 @@ akX aPv aPD aRf -aac -aac +ajV +ajV azs axO bCs @@ -41242,12 +41249,12 @@ aga amQ atJ auk -auk +aQq aPB ajV -aac -aac -aac +ajV +ajV +ajV azs azs sgu @@ -41387,7 +41394,7 @@ ajV ajV avR ajV -adt +awY awY awY awY diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm index 5bbd356715..9dd406d57a 100644 --- a/maps/tether/tether-07-station3.dmm +++ b/maps/tether/tether-07-station3.dmm @@ -20023,6 +20023,7 @@ /obj/machinery/camera/network/mining{ dir = 8 }, +/obj/structure/ore_box, /turf/simulated/floor/tiled, /area/quartermaster/belterdock) "aUG" = ( @@ -21425,7 +21426,7 @@ /turf/simulated/floor/tiled, /area/quartermaster/belterdock/surface_mining_outpost_shuttle_hangar) "bag" = ( -/obj/structure/ore_box, +/obj/machinery/mech_recharger, /turf/simulated/floor/tiled/asteroid_steel/airless, /area/quartermaster/belterdock) "bah" = ( diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index 6005927002..1df3034450 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -206,6 +206,14 @@ planet_datums_to_make = list(/datum/planet/virgo3b, /datum/planet/virgo4) +/datum/map/tether/get_map_info() + . = list() + . += "The [full_name] is an ancient ruin turned workplace in the Virgo-Erigone System, deep in the midst of the Coreward Periphery.
" + . += "Humanity has spread across the stars and has met many species on similar or even more advanced terms than them - it's a brave new world and many try to find their place in it .
" + . += "Though Virgo-Erigone is not important for the great movers and shakers, it sees itself in the midst of the interests of a reviving alien species of the Zorren, corporate and subversive interests and other exciting dangers the Periphery has to face.
" + . += "As an employee or contractor of NanoTrasen, operators of the Adephagia and one of the galaxy's largest corporations, you're probably just here to do a job." + return jointext(., "
") + /datum/map/tether/perform_map_generation() new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, Z_LEVEL_SURFACE_MINE, world.maxx, world.maxy) // Create the mining Z-level. diff --git a/maps/tether/tether_jobs.dm b/maps/tether/tether_jobs.dm index 2b9807f28f..7c671ac58a 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,22 +151,24 @@ /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 l_ear = /obj/item/device/radio/headset/talon shoes = /obj/item/clothing/shoes/black - uniform = /obj/item/clothing/under/rank/pilot1 + uniform = /obj/item/clothing/under/rank/pilot1/no_webbing suit = /obj/item/clothing/suit/storage/toggle/bomber/pilot gloves = /obj/item/clothing/gloves/fingerless glasses = /obj/item/clothing/glasses/fakesunglasses/aviator + uniform_accessories = list(/obj/item/clothing/accessory/storage/webbing/pilot1 = 1) /decl/hierarchy/outfit/job/talon_doctor 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 @@ -184,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) @@ -202,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 fd234060dc..ea448e53be 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -402,11 +402,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\security_yw.dm" #include "code\datums\outfits\jobs\special_vr.dm" @@ -1341,6 +1344,8 @@ #include "code\game\objects\items\weapons\grenades\supermatter.dm" #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" @@ -1751,9 +1756,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" @@ -2732,6 +2737,7 @@ #include "code\modules\mob\living\carbon\human\species\station\station_special_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\station_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\xenochimera_hud_vr.dm" +#include "code\modules\mob\living\carbon\human\species\station\xenochimera_trait_vr.dm" #include "code\modules\mob\living\carbon\human\species\station\protean_vr\protean_blob.dm" #include "code\modules\mob\living\carbon\human\species\station\protean_vr\protean_powers.dm" #include "code\modules\mob\living\carbon\human\species\station\protean_vr\protean_species.dm"