diff --git a/code/game/objects/items/weapons/id cards/cards.dm b/code/game/objects/items/weapons/id cards/cards.dm
index 649d9a3a34..e62268c2c1 100644
--- a/code/game/objects/items/weapons/id cards/cards.dm
+++ b/code/game/objects/items/weapons/id cards/cards.dm
@@ -20,7 +20,7 @@
var/associated_account_number = 0
var/list/initial_sprite_stack = list("")
- var/base_icon = "icons/obj/card_new.dmi"
+ var/base_icon = 'icons/obj/card_new.dmi'
var/list/sprite_stack
var/list/files = list( )
@@ -136,4 +136,4 @@
uses += T.amount/2 //Gives 5 uses per 10 TC
uses = CEILING(uses, 1) //Ensures no decimal uses nonsense, rounds up to be nice
to_chat(usr, "You add \the [O] to \the [src]. Increasing the uses of \the [src] to [uses].")
- qdel(O)
\ No newline at end of file
+ qdel(O)
diff --git a/code/game/objects/items/weapons/id cards/id_stacks.dm b/code/game/objects/items/weapons/id cards/id_stacks.dm
index 4567cfe038..9180b8e45b 100644
--- a/code/game/objects/items/weapons/id cards/id_stacks.dm
+++ b/code/game/objects/items/weapons/id cards/id_stacks.dm
@@ -4,95 +4,145 @@
/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"
+ 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
+
+/*
+/obj/item/weapon/card/id/generic
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip")
+
+// CENTCOM
+/obj/item/weapon/card/id/centcom
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-gold")
+
+/obj/item/weapon/card/id/centcom/vip
+ initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
+
+/obj/item/weapon/card/id/centcom/ERT
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "pips-red", "stripe-red")
+
+// GENERIC COMMAND
+/obj/item/weapon/card/id/silver
+ initial_sprite_stack = list("base-stamp-silver", "top-mime", "stamp-n-generic")
+
+/obj/item/weapon/card/id/silver/secretary
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n")
+
+/obj/item/weapon/card/id/silver/hop
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-white")
+
+// MEDICAL
+/obj/item/weapon/card/id/medical
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n")
+
+/obj/item/weapon/card/id/medical/chemist
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-orange")
+
+/obj/item/weapon/card/id/medical/geneticist
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple")
+
+/obj/item/weapon/card/id/medical/psych
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-purple")
+
+/obj/item/weapon/card/id/medical/emt
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "pips-blue")
+
+/obj/item/weapon/card/id/medical/head
+ initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "stripe-gold")
+
+/obj/item/weapon/card/id/medical/sar
+ initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n", "pips-medblu")
+
+// SECURITY
+/obj/item/weapon/card/id/security
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n")
+
+/obj/item/weapon/card/id/security/detective
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-brown")
+
+/obj/item/weapon/card/id/security/warden
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "pips-white")
+
+/obj/item/weapon/card/id/security/head
+ initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "stripe-gold")
+
+// ENGINEERING
+/obj/item/weapon/card/id/engineering
+ initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n")
+
+/obj/item/weapon/card/id/engineering/atmos
+ initial_sprite_stack = list("base-stamp", "top-orange", "pips-medblu", "stamp-n")
+
+/obj/item/weapon/card/id/engineering/head
+ initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "stripe-gold")
+
+// SCIENCE
+/obj/item/weapon/card/id/science
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n")
+
+/obj/item/weapon/card/id/science/roboticist
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "pips-orange")
+
+/obj/item/weapon/card/id/science/explorer
+ initial_sprite_stack = list("base-stamp", "top-darkgreen", "stamp-n")
+
+/obj/item/weapon/card/id/science/head
+ initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "stripe-gold")
+
+/obj/item/weapon/card/id/science/head/pathfinder
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "dept-exploration", "stamp-n", "pips-gold")
+
+// CARGO
+/obj/item/weapon/card/id/cargo
+ initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n")
+
+/obj/item/weapon/card/id/cargo/miner
+ initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "pips-purple")
+
+/obj/item/weapon/card/id/cargo/head
+ initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-gold")
+
+// CIVLIAN
+/obj/item/weapon/card/id/civilian
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/chaplain
+ initial_sprite_stack = list("base-stamp-silver", "top-dark", "stamp-cross", "pips-white")
+
+/obj/item/weapon/card/id/civilian/internal_affairs
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/botanist
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-brown")
+
+/obj/item/weapon/card/id/civilian/bartender
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-dark")
+
+/obj/item/weapon/card/id/civilian/chef
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-white")
+
+/obj/item/weapon/card/id/civilian/janitor
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "pips-purple")
+
+/obj/item/weapon/card/id/civilian/journalist
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/clown
+ initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/mime
+ initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black")
+
+/obj/item/weapon/card/id/civilian/pilot
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "pips-blue")
+
+/obj/item/weapon/card/id/civilian/head
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "stripe-white")
+
+/obj/item/weapon/card/id/syndicate
+ initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s")
+
+/obj/item/weapon/card/id/syndicate/officer
+ initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s", "pips-gold", "stripe-gold")
+*/
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
deleted file mode 100644
index a35b1febf9..0000000000
--- a/code/game/objects/items/weapons/id cards/id_stacks_cit.dm
+++ /dev/null
@@ -1,92 +0,0 @@
-// 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
deleted file mode 100644
index bce7340ecc..0000000000
--- a/code/game/objects/items/weapons/id cards/id_stacks_deptname.dm
+++ /dev/null
@@ -1,92 +0,0 @@
-// 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
index 12442a353f..7627d66cf3 100644
--- a/code/game/objects/items/weapons/id cards/id_stacks_vr.dm
+++ b/code/game/objects/items/weapons/id cards/id_stacks_vr.dm
@@ -1,131 +1,216 @@
/obj/item/weapon/card
+ icon = 'icons/obj/card_new_vr.dmi'
+ base_icon = 'icons/obj/card_new_vr.dmi'
- 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
+//IDs
+
+/obj/item/weapon/card/id
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
+
+/obj/item/weapon/card/id/generic
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-silhouette", "clip")
+
+//Central
+
+/obj/item/weapon/card/id/centcom
+ initial_sprite_stack = list("base-stamp-silver", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold")
+
+/obj/item/weapon/card/id/centcom/vip
+ initial_sprite_stack = list("base-stamp-gold", "top-darkgreen", "stamp-n", "pips-gold", "stripe-gold")
+
+//ERT
+
+/obj/item/weapon/card/id/centcom/ERT
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-red", "stripe-red")
+
+/obj/item/weapon/card/id/centcom/ERT/medic
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-medblu", "stripe-medblu")
+
+/obj/item/weapon/card/id/centcom/ERT/commander
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold", "stripe-gold")
+
+/obj/item/weapon/card/id/centcom/ERT/engineer
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-orange", "stripe-orange")
+
+/obj/item/weapon/card/id/centcom/ERT/janitor
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-purple", "stripe-purple")
+
+//Silver
+
+/obj/item/weapon/card/id/silver
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n")
+
+/obj/item/weapon/card/id/silver/secretary
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n")
+
+/obj/item/weapon/card/id/silver/hop
+ initial_sprite_stack = list("base-stamp-silver", "top-blue", "stamp-n", "pips-gold")
+
+//Gold
+
+/obj/item/weapon/card/id/gold
+ initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n")
+
+/obj/item/weapon/card/id/gold/captain
+ initial_sprite_stack = list("base-stamp-gold", "top-blue", "stamp-n", "pips-gold")
+
+/obj/item/weapon/card/id/gold/captain/spare
+ initial_sprite_stack = list("base-stamp-gold", "top-gold", "stamp-n")
+
+//Medical
+
+/obj/item/weapon/card/id/medical
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n")
+
+/obj/item/weapon/card/id/medical/chemist
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-orange")
+
+/obj/item/weapon/card/id/medical/geneticist
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-purple")
+
+/obj/item/weapon/card/id/medical/psych
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-brown")
+
+/obj/item/weapon/card/id/medical/virologist
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-green")
+
+/obj/item/weapon/card/id/medical/emt
+ initial_sprite_stack = list("base-stamp", "top-medblu", "stamp-n", "stripe-blue")
+
+/obj/item/weapon/card/id/medical/head
+ initial_sprite_stack = list("base-stamp-silver", "top-medblu", "stamp-n", "pips-gold")
+
+//Security
+
+/obj/item/weapon/card/id/security
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n")
+
+/obj/item/weapon/card/id/security/detective
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-brown")
+
+/obj/item/weapon/card/id/security/warden
+ initial_sprite_stack = list("base-stamp", "top-red", "stamp-n", "stripe-white")
+
+/obj/item/weapon/card/id/security/head
+ initial_sprite_stack = list("base-stamp-silver", "top-red", "stamp-n", "pips-gold")
+
+//Engineering
+
+/obj/item/weapon/card/id/engineering
+ initial_sprite_stack = list("base-stamp", "top-orange", "stamp-n")
+
+/obj/item/weapon/card/id/engineering/atmos
+ initial_sprite_stack = list("base-stamp", "top-orange", "stripe-medblu", "stamp-n")
+
+/obj/item/weapon/card/id/engineering/head
+ initial_sprite_stack = list("base-stamp-silver", "top-orange", "stamp-n", "pips-gold")
+
+//Science
+
+/obj/item/weapon/card/id/science
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n")
+
+/obj/item/weapon/card/id/science/roboticist
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-brown")
+
+/obj/item/weapon/card/id/science/xenobiologist
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-orange")
+
+/obj/item/weapon/card/id/science/xenobotanist
+ initial_sprite_stack = list("base-stamp", "top-purple", "stamp-n", "stripe-green")
+
+/obj/item/weapon/card/id/science/head
+ initial_sprite_stack = list("base-stamp-silver", "top-purple", "stamp-n", "pips-gold")
+
+//Cargo
+
+/obj/item/weapon/card/id/cargo
+ initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n")
+
+/obj/item/weapon/card/id/cargo/miner
+ initial_sprite_stack = list("base-stamp", "top-brown", "stamp-n", "stripe-purple")
+
+/obj/item/weapon/card/id/cargo/head
+ initial_sprite_stack = list("base-stamp-silver", "top-brown", "stamp-n", "pips-white")
+
+//Civilian
+
+/obj/item/weapon/card/id/civilian
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/chaplain
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-cross", "stripe-white")
+
+/obj/item/weapon/card/id/civilian/journalist
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-red")
+
+/obj/item/weapon/card/id/civilian/pilot
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-pink")
+
+/obj/item/weapon/card/id/civilian/entertainer
+ initial_sprite_stack = list("base-stamp", "top-generic", "stamp-n", "stripe-brown")
+
+/obj/item/weapon/card/id/civilian/clown
+ initial_sprite_stack = list("base-stamp", "top-rainbow", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/mime
+ initial_sprite_stack = list("base-stamp", "top-white", "stamp-n", "stripe-black")
+
+/obj/item/weapon/card/id/civilian/internal_affairs
+ initial_sprite_stack = list("base-stamp", "top-blue", "stamp-n", "stripe-black")
+
+//Service
+
+/obj/item/weapon/card/id/civilian/service
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n")
+
+/obj/item/weapon/card/id/civilian/service/botanist
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-darkgreen")
+
+/obj/item/weapon/card/id/civilian/service/bartender
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-black")
+
+/obj/item/weapon/card/id/civilian/service/chef
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-white")
+
+/obj/item/weapon/card/id/civilian/service/janitor
+ initial_sprite_stack = list("base-stamp", "top-green", "stamp-n", "stripe-purple")
+
+//Exploration
+
+/obj/item/weapon/card/id/exploration
+ initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n")
+
+/obj/item/weapon/card/id/exploration/fm
+ initial_sprite_stack = list("base-stamp", "top-pink", "stamp-n", "stripe-medblu")
+
+/obj/item/weapon/card/id/exploration/head
+ initial_sprite_stack = list("base-stamp-silver", "top-pink", "stamp-n", "pips-white")
+
+//Talon
+
+/obj/item/weapon/card/id/talon
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette")
+
+/obj/item/weapon/card/id/talon/doctor
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-medblu", "stripe-medblu")
+
+/obj/item/weapon/card/id/talon/engineer
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-orange", "stripe-orange")
+
+/obj/item/weapon/card/id/talon/officer
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-red", "stripe-red")
+
+/obj/item/weapon/card/id/talon/pilot
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-purple", "stripe-purple")
+
+/obj/item/weapon/card/id/talon/captain
+ initial_sprite_stack = list("base-stamp-dark", "top-dark", "stamp-silhouette", "pips-gold", "stripe-gold")
+
+//Antags
+
+/obj/item/weapon/card/id/syndicate
+ initial_sprite_stack = list("base-stamp-dark", "top-syndicate", "stamp-s")
+
+/obj/item/weapon/card/id/syndicate/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_vr.dm b/code/game/objects/items/weapons/id cards/station_ids_vr.dm
index 756ab3bc9c..3a8f2cae57 100644
--- a/code/game/objects/items/weapons/id cards/station_ids_vr.dm
+++ b/code/game/objects/items/weapons/id cards/station_ids_vr.dm
@@ -1,50 +1,98 @@
+/obj/item/weapon/card/id/event
+ var/configured = 0
+ var/accessset = 0
+ initial_sprite_stack = list()
+ var/list/title_strings = list()
+ var/preset_rank = FALSE
+
+/obj/item/weapon/card/id/event/attack_self(mob/user as mob)
+ if(configured == 1)
+ return ..()
+
+ if(!preset_rank)
+ var/title
+ if(user.client.prefs.player_alt_titles[user.job])
+ title = user.client.prefs.player_alt_titles[user.job]
+ else
+ title = user.job
+ assignment = title
+ user.set_id_info(src)
+ if(user.mind && user.mind.initial_account)
+ associated_account_number = user.mind.initial_account.account_number
+ if(title_strings.len)
+ var/tempname = pick(title_strings)
+ name = tempname + " ([assignment])"
+ else
+ name = user.name + "'s ID card" + " ([assignment])"
+
+ configured = 1
+ to_chat(user, "Card settings set.")
+
+/obj/item/weapon/card/id/event/attackby(obj/item/I as obj, mob/user as mob)
+ if(istype(I, /obj/item/weapon/card/id) && !accessset)
+ var/obj/item/weapon/card/id/O = I
+ access |= O.access
+ to_chat(user, "You copy the access from \the [I] to \the [src].")
+ user.drop_from_inventory(I)
+ qdel(I)
+ accessset = 1
+ ..()
+
+/obj/item/weapon/card/id/event/accessset
+ accessset = 1
+
+
+
/obj/item/weapon/card/id/gold/captain/spare/fakespare
rank = "null"
-/obj/item/weapon/card/id/itg
+/obj/item/weapon/card/id/event/accessset/itg
name = "identification card"
desc = "A small card designating affiliation with the Ironcrest Transport Group."
icon = 'icons/obj/card_vr.dmi'
+ base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
item_state = "itg_id"
+ sprite_stack = list("")
-/obj/item/weapon/card/id/itg/green
+/obj/item/weapon/card/id/event/accessset/itg/green
icon_state = "itg_green"
item_state = "itg_green_id"
-/obj/item/weapon/card/id/itg/red
+/obj/item/weapon/card/id/event/accessset/itg/red
icon_state = "itg_red"
item_state = "itg_red_id"
-/obj/item/weapon/card/id/itg/purple
+/obj/item/weapon/card/id/event/accessset/itg/purple
icon_state = "itg_purple"
item_state = "itg_purple_id"
-/obj/item/weapon/card/id/itg/white
+/obj/item/weapon/card/id/event/accessset/itg/white
icon_state = "itg_white"
item_state = "itg_white_id"
-/obj/item/weapon/card/id/itg/orange
+/obj/item/weapon/card/id/event/accessset/itg/orange
icon_state = "itg_orange"
item_state = "itg_orange_id"
-/obj/item/weapon/card/id/itg/blue
+/obj/item/weapon/card/id/event/accessset/itg/blue
icon_state = "itg_blue"
item_state = "itg_blue_id"
-/obj/item/weapon/card/id/itg/event
+/obj/item/weapon/card/id/event/accessset/itg/crew
name = "\improper ITG Crew ID"
assignment = "Crew"
rank = "Crew"
access = list(777)
+ preset_rank = TRUE
-/obj/item/weapon/card/id/itg/event/pilot
+/obj/item/weapon/card/id/event/accessset/itg/crew/pilot
name = "\improper ITG Pilot's ID"
desc = "An ID card belonging to the Pilot of an ITG vessel. The Pilot's responsibility is primarily to fly the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Pilot"
rank = "Pilot"
-/obj/item/weapon/card/id/itg/event/service
+/obj/item/weapon/card/id/event/accessset/itg/crew/service
name = "\improper ITG Cook's ID"
desc = "An ID card belonging to the Cook of an ITG vessel. The Cook's responsibility is primarily to provide sustinence to the crew and passengers. The Cook answers to the Passenger Liason. In the absence of a Passenger Liason, the Cook is also responsible for tending to passenger related care and duties."
assignment = "Cook"
@@ -52,7 +100,7 @@
icon_state = "itg_green"
item_state = "itg_green_id"
-/obj/item/weapon/card/id/itg/event/security
+/obj/item/weapon/card/id/event/accessset/itg/crew/security
name = "\improper ITG Security's ID"
desc = "An ID card belonging to Security of an ITG vessel. Security's responsibility is primarily to protect the ship, cargo, or facility. They may also be tasked to assist with cargo movement duties and rescue operations. ITG Security is almost exclusively defensive. They should not start fights, but they are very capable of finishing them."
assignment = "Security"
@@ -60,7 +108,7 @@
icon_state = "itg_red"
item_state = "itg_red_id"
-/obj/item/weapon/card/id/itg/event/research
+/obj/item/weapon/card/id/event/accessset/itg/crew/research
name = "\improper ITG Research's ID"
desc = "An ID card belonging to ITG Research staff. ITG Research staff primarily specializes in starship and starship engine design, and overcoming astronomic phenomena."
assignment = "Research"
@@ -68,7 +116,7 @@
icon_state = "itg_purple"
item_state = "itg_purple_id"
-/obj/item/weapon/card/id/itg/event/medical
+/obj/item/weapon/card/id/event/accessset/itg/crew/medical
name = "\improper ITG Medic's ID"
desc = "An ID card belonging to the Medic of an ITG vessel. The Medic's responsibility is primarily to treat crew and passenger injuries. They may also be tasked with rescue operations."
assignment = "Medic"
@@ -76,7 +124,7 @@
icon_state = "itg_white"
item_state = "itg_white_id"
-/obj/item/weapon/card/id/itg/event/engineer
+/obj/item/weapon/card/id/event/accessset/itg/crew/engineer
name = "\improper ITG Engineer's ID"
desc = "An ID card belonging to the Engineer of an ITG vessel. The Engineer's responsibility is primarily to maintain the ship. They may also be tasked to assist with cargo movement duties."
assignment = "Engineer"
@@ -84,7 +132,7 @@
icon_state = "itg_orange"
item_state = "itg_orange_id"
-/obj/item/weapon/card/id/itg/event/passengerliason
+/obj/item/weapon/card/id/event/accessset/itg/crew/passengerliason
name = "\improper ITG Passenger Liason's ID"
desc = "An ID card belonging to the Passenger Liason of an ITG vessel. The Passenger Liason's responsibility is primarily to manage and tend to passenger needs and maintain supplies and facilities for passenger use."
assignment = "Passenger Liason"
@@ -92,7 +140,7 @@
icon_state = "itg_blue"
item_state = "itg_blue_id"
-/obj/item/weapon/card/id/itg/event/captain
+/obj/item/weapon/card/id/event/accessset/itg/crew/captain
name = "\improper ITG Captain's ID"
desc = "An ID card belonging to the Captain of an ITG vessel. The Captain's responsibility is primarily to manage crew to ensure smooth ship operations. Captains often also often pilot the vessel when no dedicated pilot is assigned."
assignment = "Captain"
diff --git a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
index 21abba41f2..4835fa92cf 100644
--- a/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_fluffitems_vr.dm
@@ -519,7 +519,7 @@
character_name = list("Ketrai")
/datum/gear/fluff/amaya_id
- path = /obj/item/weapon/card/id/fluff/amaya
+ path = /obj/item/weapon/card/id/event/fluff/amaya
display_name = "Amaya's ID"
ckeywhitelist = list("kiraalitruss")
character_name = list("Amaya Rahl")
@@ -1079,7 +1079,7 @@
character_name = list("Roanna Ti'Rox")
/datum/gear/fluff/harmony_id
- path = /obj/item/weapon/card/id/fluff/harmony
+ path = /obj/item/weapon/card/id/event/fluff/harmony
display_name = "Harmony's ITG-ID card"
ckeywhitelist = list("verysoft")
character_name = list("Harmony")
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 376a1fafa7..35df5ef8a1 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -244,11 +244,10 @@ var/list/slot_equipment_priority = list( \
if(hasvar(src,"wear_id")) if(src:wear_id) items += src:wear_id
if(hasvar(src,"wear_mask")) if(src:wear_mask) items += src:wear_mask
if(hasvar(src,"wear_suit")) if(src:wear_suit) items += src:wear_suit
-// if(hasvar(src,"w_radio")) if(src:w_radio) items += src:w_radio commenting this out since headsets go on your ears now PLEASE DON'T BE MAD KEELIN
if(hasvar(src,"w_uniform")) if(src:w_uniform) items += src:w_uniform
- //if(hasvar(src,"l_hand")) if(src:l_hand) items += src:l_hand
- //if(hasvar(src,"r_hand")) if(src:r_hand) items += src:r_hand
+ if(hasvar(src,"l_hand")) if(src:l_hand) items += src:l_hand
+ if(hasvar(src,"r_hand")) if(src:r_hand) items += src:r_hand
return items
diff --git a/code/modules/organs/subtypes/standard.dm b/code/modules/organs/subtypes/standard.dm
index 6f9e04c5b4..9e465ce8ba 100644
--- a/code/modules/organs/subtypes/standard.dm
+++ b/code/modules/organs/subtypes/standard.dm
@@ -334,7 +334,7 @@
if(!iscarbon(owner) || !owner.species)
return
- var/icon/eyecon
+ var/icon/eyecon //VOREStation Add
//Eye color/icon
var/should_have_eyes = owner.should_have_organ(O_EYES)
diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm
index ab589d9671..b2958d0ddf 100644
--- a/code/modules/vore/eating/digest_act_vr.dm
+++ b/code/modules/vore/eating/digest_act_vr.dm
@@ -82,9 +82,13 @@
var/lost_access = list()
/obj/item/weapon/card/id/digest_act(atom/movable/item_storage = null)
- desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic, but the access codes need to be reprogrammed at the HoP office."
- icon = 'icons/obj/card_vr.dmi'
- icon_state = "[initial(icon_state)]_digested"
+ desc = "A partially digested card that has seen better days. The damage appears to be only cosmetic, but the access codes need to be reprogrammed at the HoP office or ID restoration terminal."
+ if(!sprite_stack || !istype(sprite_stack) || !(sprite_stack.len))
+ icon = 'icons/obj/card_vr.dmi'
+ icon_state = "[initial(icon_state)]_digested"
+ else
+ sprite_stack += "digested"
+ update_icon()
if(!(LAZYLEN(lost_access)) && LAZYLEN(access))
lost_access = access //Do not forget what access we lose
access = list() // Then lose it
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 1d3f326137..db685da1fa 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -786,82 +786,24 @@
Under it is written 'Kouri, Amina, Marine Unit 14, Fifth Echelon. Service number NTN-5528928522372'"
//arokha:Amaya Rahl - Custom ID (Medical dept)
-/obj/item/weapon/card/id/fluff/amaya
+/obj/item/weapon/card/id/event/fluff/amaya
registered_name = "CONFIGURE ME"
assignment = "CONFIGURE ME"
- var/configured = 0
- var/accessset = 0
icon = 'icons/vore/custom_items_vr.dmi'
+ base_icon = 'icons/vore/custom_items_vr.dmi'
icon_state = "amayarahlwahID"
desc = "A primarily blue ID with a holographic 'WAH' etched onto its back. The letters do not obscure anything important on the card. It is shiny and it feels very bumpy."
- var/title_strings = list("Amaya Rahl's Wah-identification card", "Amaya Rahl's Wah-ID card")
-
-/obj/item/weapon/card/id/fluff/amaya/attack_self(mob/user as mob)
- if(configured == 1)
- return ..()
-
- var/title
- if(user.client.prefs.player_alt_titles[user.job])
- title = user.client.prefs.player_alt_titles[user.job]
- else
- title = user.job
- assignment = title
- user.set_id_info(src)
- if(user.mind && user.mind.initial_account)
- associated_account_number = user.mind.initial_account.account_number
- var/tempname = pick(title_strings)
- name = tempname + " ([title])"
- configured = 1
- to_chat(user, "Card settings set.")
-
-/obj/item/weapon/card/id/fluff/amaya/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/card/id) && !accessset)
- var/obj/item/weapon/card/id/O = I
- access |= O.access
- to_chat(user, "You copy the access from \the [I] to \the [src].")
- user.drop_from_inventory(I)
- qdel(I)
- accessset = 1
- ..()
+ title_strings = list("Amaya Rahl's Wah-identification card", "Amaya Rahl's Wah-ID card")
//verysoft:Harmony - Custom ID (pilot)
-/obj/item/weapon/card/id/fluff/harmony
+/obj/item/weapon/card/id/event/fluff/harmony
registered_name = "CONFIGURE ME"
assignment = "CONFIGURE ME"
- var/configured = 0
- var/accessset = 0
icon = 'icons/obj/card_vr.dmi'
+ base_icon = 'icons/obj/card_vr.dmi'
icon_state = "itg"
desc = "A small card designating affiliation with the Ironcrest Transport Group. It has a NanoTrasen insignia and a lot of very small print on the back to do with practices and regulations for contractors to use."
- var/title_strings = list("Harmony's ITG-ID card")
-
-/obj/item/weapon/card/id/fluff/harmony/attack_self(mob/user as mob)
- if(configured == 1)
- return ..()
-
- var/title
- if(user.client.prefs.player_alt_titles[user.job])
- title = user.client.prefs.player_alt_titles[user.job]
- else
- title = user.job
- assignment = title
- user.set_id_info(src)
- if(user.mind && user.mind.initial_account)
- associated_account_number = user.mind.initial_account.account_number
- var/tempname = pick(title_strings)
- name = tempname + " ([title])"
- configured = 1
- to_chat(user, "Card settings set.")
-
-/obj/item/weapon/card/id/fluff/harmony/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/card/id) && !accessset)
- var/obj/item/weapon/card/id/O = I
- access |= O.access
- to_chat(user, "You copy the access from \the [I] to \the [src].")
- user.drop_from_inventory(I)
- qdel(I)
- accessset = 1
- ..()
+ title_strings = list("Harmony's ITG-ID card")
//General use, Verk felt like sharing.
/obj/item/clothing/glasses/fluff/science_proper
diff --git a/icons/obj/card_new_vr.dmi b/icons/obj/card_new_vr.dmi
new file mode 100644
index 0000000000..20e3c85583
Binary files /dev/null and b/icons/obj/card_new_vr.dmi differ
diff --git a/maps/offmap_vr/om_ships/itglight.dmm b/maps/offmap_vr/om_ships/itglight.dmm
index 4707ee1c88..4444727be2 100644
--- a/maps/offmap_vr/om_ships/itglight.dmm
+++ b/maps/offmap_vr/om_ships/itglight.dmm
@@ -56,7 +56,7 @@
"af" = (
/obj/structure/table/wooden_reinforced,
/obj/item/weapon/paper/dockingcodes,
-/obj/item/weapon/card/id/itg/event/captain,
+/obj/item/weapon/card/id/event/accessset/itg/crew/captain,
/obj/machinery/computer/ship/navigation/telescreen{
pixel_y = -32
},
@@ -88,7 +88,7 @@
/obj/item/clothing/suit/chef/classic,
/obj/item/clothing/head/chefhat,
/obj/item/clothing/suit/storage/solgov/service/army/service,
-/obj/item/weapon/card/id/itg/event/service,
+/obj/item/weapon/card/id/event/accessset/itg/crew/service,
/turf/simulated/floor/tiled/eris/steel/brown_platform,
/area/itglight/metingroom)
"ah" = (
@@ -115,7 +115,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/engineering,
/obj/item/taperoll/engineering,
/obj/item/clothing/suit/storage/solgov/service/army/engineering,
-/obj/item/weapon/card/id/itg/event/engineer,
+/obj/item/weapon/card/id/event/accessset/itg/crew/engineer,
/turf/simulated/floor/tiled/eris/steel/brown_platform,
/area/itglight/metingroom)
"ai" = (
@@ -141,7 +141,7 @@
},
/obj/item/clothing/suit/storage/hooded/wintercoat/medical,
/obj/item/clothing/suit/storage/solgov/service/army/medical,
-/obj/item/weapon/card/id/itg/event/medical,
+/obj/item/weapon/card/id/event/accessset/itg/crew/medical,
/turf/simulated/floor/tiled/eris/steel/brown_platform,
/area/itglight/metingroom)
"aj" = (
@@ -168,7 +168,7 @@
/obj/item/clothing/suit/storage/hooded/wintercoat/security,
/obj/item/clothing/suit/storage/trench,
/obj/item/clothing/suit/storage/solgov/service/army/security,
-/obj/item/weapon/card/id/itg/event/security,
+/obj/item/weapon/card/id/event/accessset/itg/crew/security,
/obj/item/clothing/accessory/holster/hip,
/turf/simulated/floor/tiled/eris/steel/brown_platform,
/area/itglight/metingroom)
@@ -3654,21 +3654,21 @@
},
/obj/item/clothing/suit/space/void/captain,
/obj/item/clothing/head/helmet/space/void/captain,
-/obj/item/weapon/card/id/itg/event,
-/obj/item/weapon/card/id/itg/event,
-/obj/item/weapon/card/id/itg/event,
-/obj/item/weapon/card/id/itg/event,
-/obj/item/weapon/card/id/itg/event,
-/obj/item/weapon/card/id/itg/event/passengerliason,
-/obj/item/weapon/card/id/itg/event/pilot,
-/obj/item/weapon/card/id/itg/event/research,
-/obj/item/weapon/card/id/itg/event/research,
-/obj/item/weapon/card/id/itg/event/security,
-/obj/item/weapon/card/id/itg/event/service,
-/obj/item/weapon/card/id/itg/event/engineer,
-/obj/item/weapon/card/id/itg/event/engineer,
-/obj/item/weapon/card/id/itg/event/medical,
-/obj/item/weapon/card/id/itg/event/medical,
+/obj/item/weapon/card/id/event/accessset/itg/crew,
+/obj/item/weapon/card/id/event/accessset/itg/crew,
+/obj/item/weapon/card/id/event/accessset/itg/crew,
+/obj/item/weapon/card/id/event/accessset/itg/crew,
+/obj/item/weapon/card/id/event/accessset/itg/crew,
+/obj/item/weapon/card/id/event/accessset/itg/crew/passengerliason,
+/obj/item/weapon/card/id/event/accessset/itg/crew/pilot,
+/obj/item/weapon/card/id/event/accessset/itg/crew/research,
+/obj/item/weapon/card/id/event/accessset/itg/crew/research,
+/obj/item/weapon/card/id/event/accessset/itg/crew/security,
+/obj/item/weapon/card/id/event/accessset/itg/crew/service,
+/obj/item/weapon/card/id/event/accessset/itg/crew/engineer,
+/obj/item/weapon/card/id/event/accessset/itg/crew/engineer,
+/obj/item/weapon/card/id/event/accessset/itg/crew/medical,
+/obj/item/weapon/card/id/event/accessset/itg/crew/medical,
/obj/item/clothing/suit/storage/hooded/wintercoat/cargo{
name = "dauntless winter coat"
},
diff --git a/maps/southern_cross/events/wildlife_encounter.dm b/maps/southern_cross/events/wildlife_encounter.dm
new file mode 100644
index 0000000000..0a045f9f17
--- /dev/null
+++ b/maps/southern_cross/events/wildlife_encounter.dm
@@ -0,0 +1,103 @@
+// This event sends random sif mobs at someone in the wilderness, unannounced.
+
+/datum/event2/meta/wildlife_encounter
+ name = "random encounter"
+ departments = list(DEPARTMENT_EVERYONE)
+ chaos = 10
+ event_type = /datum/event2/event/wildlife_encounter
+
+/datum/event2/meta/wildlife_encounter/get_weight()
+ var/explorers = metric.count_people_with_job(/datum/job/explorer) + metric.count_people_with_job(/datum/job/sar)
+
+ if(!explorers)
+ return 0
+ return 20 + explorers * 50
+
+/datum/event2/event/wildlife_encounter
+ var/mob/living/victim = null
+ var/list/potential_victims = list()
+
+/datum/event2/event/wildlife_encounter/set_up()
+ for(var/mob/living/L in player_list)
+ //if(!(L.z in get_location_z_levels()))
+ // log_debug("Not on the right z-level")
+ // continue // Not on the right z-level.
+ if(L.stat)
+ continue // Don't want dead people.
+ if(istype(get_turf(L), /turf/simulated/floor/outdoors) && istype(get_area(L),/area/surface/outside/wilderness))
+ potential_victims += L
+
+ if(potential_victims.len)
+ victim = pick(potential_victims)
+
+/datum/event2/event/wildlife_encounter/start()
+ if(!victim)
+ log_debug("Failed to find a target for random encounter. Aborting.")
+ abort()
+ return
+
+ var/number_of_packs = rand(1, 3)
+ // Getting off screen tiles is kind of tricky due to potential edge cases that could arise.
+ // The method we're gonna do is make a big square around the victim, then
+ // subtract a smaller square in the middle for the default vision range.
+
+ var/list/outer_square = get_safe_square(victim, world.view + 5)
+ var/list/inner_square = get_safe_square(victim, world.view + 1)
+
+ var/list/donut = outer_square - inner_square
+ for(var/T in donut)
+ if(!istype(T, /turf/simulated/floor/outdoors))
+ donut -= T
+
+ var/build_path = item_to_spawn()
+ var/turf/spawning_turf = null
+ var/attempts = 0
+
+ while (!spawning_turf && attempts != 10)
+ spawning_turf = pick(donut)
+ for(var/i = 1 to potential_victims.len)
+ if (get_dist(spawning_turf, potential_victims[i]) < world.view)
+ spawning_turf = null
+ log_debug("Failed to locate position out of sight of [potential_victims[i]].")
+ attempts++
+
+ potential_victims = null
+
+ log_debug("Sending [number_of_packs] [build_path]\s after \the [victim].")
+ for(var/i = 1 to number_of_packs)
+
+ if(spawning_turf)
+ var/mob/living/simple_mob/M = new build_path(spawning_turf)
+ M.ai_holder?.give_destination(get_turf(victim))
+ else
+ log_debug("Failed to locate turf to spawn encounter.")
+
+/datum/event2/event/wildlife_encounter/proc/item_to_spawn()
+ return pick(prob(22);/mob/living/simple_mob/animal/sif/savik,
+ prob(20);/mob/living/simple_mob/animal/sif/frostfly,
+ prob(10);/mob/living/simple_mob/animal/sif/tymisian,
+ prob(45);/mob/living/simple_mob/animal/sif/shantak,
+ prob(15);/mob/living/simple_mob/animal/sif/kururak/hibernate,
+ prob(10);/mob/living/simple_mob/animal/sif/kururak,
+ prob(3);/mob/living/simple_mob/animal/giant_spider,
+ prob(8);/mob/living/simple_mob/animal/giant_spider/hunter,
+ prob(3);/mob/living/simple_mob/animal/giant_spider/webslinger,
+ prob(3);/mob/living/simple_mob/animal/giant_spider/carrier,
+ prob(6);/mob/living/simple_mob/animal/giant_spider/lurker,
+ prob(4);/mob/living/simple_mob/animal/giant_spider/tunneler,
+ prob(5);/mob/living/simple_mob/animal/giant_spider/pepper,
+ prob(5);/mob/living/simple_mob/animal/giant_spider/thermic,
+ prob(1);/mob/living/simple_mob/animal/giant_spider/phorogenic,
+ prob(30);/mob/living/simple_mob/animal/giant_spider/frost)
+
+/datum/event2/event/wildlife_encounter/proc/get_safe_square(atom/center, radius)
+ var/lower_left_x = max(center.x - radius, 1 + TRANSITIONEDGE)
+ var/lower_left_y = max(center.y - radius, 1 + TRANSITIONEDGE)
+
+ var/upper_right_x = min(center.x + radius, world.maxx - TRANSITIONEDGE)
+ var/upper_right_y = min(center.y + radius, world.maxy - TRANSITIONEDGE)
+
+ var/turf/lower_left = locate(lower_left_x, lower_left_y, victim.z)
+ var/turf/upper_right = locate(upper_right_x, upper_right_y, victim.z)
+
+ return block(lower_left, upper_right)
diff --git a/maps/southern_cross/southern_cross.dm b/maps/southern_cross/southern_cross.dm
index a9a009e553..7f31cf900c 100644
--- a/maps/southern_cross/southern_cross.dm
+++ b/maps/southern_cross/southern_cross.dm
@@ -36,6 +36,7 @@
#include "structures/closets/security.dm"
#include "turfs/outdoors.dm"
#include "overmap/sectors.dm"
+ #include "events/wildlife_encounter.dm"
#include "southern_cross-1.dmm"
#include "southern_cross-2.dmm"
diff --git a/vorestation.dme b/vorestation.dme
index ea448e53be..b873da6a04 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -1756,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"