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 3
user.visible_message("\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"