diff --git a/baystation12.dme b/baystation12.dme
index c5b3ba1798..a538b999ad 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -162,9 +162,11 @@
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Supermatter"
#define FILE_DIR "code/WorkInProgress/Cael_Aislinn/Tajara"
#define FILE_DIR "code/WorkInProgress/Chinsky"
+#define FILE_DIR "code/WorkInProgress/Holiday"
#define FILE_DIR "code/WorkInProgress/mapload"
#define FILE_DIR "code/WorkInProgress/Mini"
#define FILE_DIR "code/WorkInProgress/Mloc"
+#define FILE_DIR "code/WorkInProgress/Mloc/MAtmos"
#define FILE_DIR "code/WorkInProgress/organs"
#define FILE_DIR "code/WorkInProgress/Ported"
#define FILE_DIR "code/WorkInProgress/Ported/Abi79"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index d39d9d1401..67ae76a5e6 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -583,6 +583,10 @@
var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
var/dorm = 0 // determines if this ID has claimed a dorm already
+ var/blood_type = "\[UNSET\]"
+ var/dna_hash = "\[UNSET\]"
+ var/fingerprint_hash = "\[UNSET\]"
+
/obj/item/weapon/card/id/silver
name = "identification card"
desc = "A silver card which shows honour and dedication."
diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/id.dm
index 6583bc5f41..d14fa30a0a 100644
--- a/code/game/machinery/computer/id.dm
+++ b/code/game/machinery/computer/id.dm
@@ -153,7 +153,14 @@
accesses += "
"
accesses += ""
accesses += ""
- body = "[carddesc]
[jobs]
[accesses]" //CHECK THIS
+
+ var/biometric = ""
+ biometric += "Biometric Data:
\
+ Blood type: [modify.blood_type]
\
+ DNA hash: [modify.dna_hash]
\
+ Fingerprint hash: [modify.fingerprint_hash]"
+
+ body = "[carddesc]
[jobs]
[biometric]
[accesses]" //CHECK THIS
else
body = "{Log in}
"
body += "Access Crew Manifest"
@@ -167,6 +174,17 @@
return
usr.machine = src
switch(href_list["choice"])
+ if("bio_btype")
+ var/new_b_type = input("Please input the blood type.", "Biometric Input") as null|anything in list( "A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-" )
+ if(new_b_type)
+ modify.blood_type = new_b_type
+
+ if("bio_dna")
+ modify.dna_hash = input("Please input the DNA hash.", "Biometric Input", modify.dna_hash)
+
+ if("bio_fprint")
+ modify.fingerprint_hash = input("Please input the fingerprint hash.", "Biometric Input", modify.fingerprint_hash)
+
if ("modify")
if (modify)
data_core.manifest_modify(modify.registered_name, modify.assignment)
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index b7e4f4b3d6..1f4b10b370 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -28,6 +28,17 @@ FINGERPRINT CARD
// ID CARDS
+/obj/item/weapon/card/id/examine()
+ ..()
+ read()
+
+/obj/item/weapon/card/id/New()
+ ..()
+ spawn(30)
+ if(istype(loc, /mob/living/carbon/human))
+ blood_type = loc:dna:b_type
+ dna_hash = loc:dna:unique_enzymes
+ fingerprint_hash = md5(loc:dna:uni_identity)
/obj/item/weapon/card/id/attack_self(mob/user as mob)
for(var/mob/O in viewers(user, null))
@@ -50,6 +61,9 @@ FINGERPRINT CARD
set src in usr
usr << text("\icon[] []: The current assignment on the card is [].", src, src.name, src.assignment)
+ usr << "The blood type on the card is [blood_type]."
+ usr << "The DNA hash on the card is [dna_hash]."
+ usr << "The fingerprint hash on the card is [fingerprint_hash]."
return
/obj/item/weapon/card/id/syndicate/var/mob/registered_user = null
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm
index 194f4af8c9..0963647145 100644
--- a/code/modules/mob/new_player/preferences.dm
+++ b/code/modules/mob/new_player/preferences.dm
@@ -634,7 +634,7 @@ datum/preferences
if(link_tags["age"])
switch(link_tags["age"])
if("input")
- var/new_age = input(user, "Please select type in age: 15-45", "Character Generation") as num
+ var/new_age = input(user, "Please select type in age: 20-65", "Character Generation") as num
if(new_age)
age = max(min(round(text2num(new_age)), 65), 20)
if("random")