diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index 1b31fc270700..3a046a9aa020 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -123,7 +123,6 @@ SUBSYSTEM_DEF(traumas)
"the supernatural" = typecacheof(list(
/obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff,
- /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard,
/obj/item/clothing/under/rank/civilian/chaplain)),
"aliens" = typecacheof(list(
diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm
index 378aa7dbe14a..261614424abc 100644
--- a/code/modules/antagonists/wizard/equipment/spellbook.dm
+++ b/code/modules/antagonists/wizard/equipment/spellbook.dm
@@ -287,19 +287,6 @@
item_path = /obj/item/necromantic_stone
category = "Assistance"
-/datum/spellbook_entry/item/armor
- name = "Mastercrafted Armor Set"
- desc = "An artefact suit of armor that allows you to cast spells while providing more protection against attacks and the void of space."
- item_path = /obj/item/clothing/suit/space/hardsuit/wizard
- category = "Defensive"
-
-/datum/spellbook_entry/item/armor/Buy(mob/living/carbon/human/user,obj/item/spellbook/book)
- . = ..()
- if(.)
- new /obj/item/tank/internals/oxygen(get_turf(user)) //i need to BREATHE
- new /obj/item/clothing/shoes/sandal/magic(get_turf(user)) //In case they've lost them.
- new /obj/item/clothing/gloves/combat/wizard(get_turf(user))//To complete the outfit
-
/datum/spellbook_entry/item/contract
name = "Contract of Apprenticeship"
desc = "A magical contract binding an apprentice wizard to your service, using it will summon them to your side."
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 4e26a713a6b2..dfba09b7ea9b 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -11,7 +11,9 @@
var/small_item = FALSE //Small items can be grouped into a single crate.
var/datum/faction/faction
+ //what's the discount for buyers in our faction.
var/faction_discount = 15
+ //are we locked to one faction and its subgroups
var/faction_locked = FALSE
/datum/supply_pack/proc/generate(atom/A, datum/bank_account/paying_account)
diff --git a/code/modules/cargo/packs/armor.dm b/code/modules/cargo/packs/armor.dm
new file mode 100644
index 000000000000..e0013468e50f
--- /dev/null
+++ b/code/modules/cargo/packs/armor.dm
@@ -0,0 +1,182 @@
+/datum/supply_pack/armor
+ group = "Armor"
+ crate_type = /obj/structure/closet/crate/secure
+
+
+/*
+ Non-spaceworthy (armor)
+*/
+
+/datum/supply_pack/armor/basic_armor
+ name = "Armor Crate"
+ desc = "One set of well-rounded body armor. The set includes a helmet and vest."
+ cost = 750
+ contains = list(/obj/item/clothing/suit/armor/vest,
+ /obj/item/clothing/head/helmet/sec)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/armor/riot_armor
+ name = "Riot Armor Crate"
+ desc = "Contains one full set of riot armor. Although heavily padded to deal with close-quarters threats, they perform poorly against most firearms."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/armor/riot,
+ /obj/item/clothing/head/helmet/riot)
+ crate_name = "riot armor crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/armor/bullet_armor
+ name = "Bulletproof Armor Crate"
+ desc = "Contains one full set of bulletproof armor, guaranteed to reduce a bullet's stopping power by half but with limited protection against melee weaponry."
+ cost = 1750
+ contains = list(/obj/item/clothing/suit/armor/vest/bulletproof,
+ /obj/item/clothing/head/helmet/bulletproof,
+ /obj/item/clothing/glasses/sunglasses/ballistic)
+ crate_name = "bulletproof armor crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/armor/laser_armor
+ name = "Reflector Vest Crate"
+ desc = "Contains one vest made of highly reflective material. The armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/armor/laserproof)
+ crate_name = "reflector vest crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/armor/marine_armor
+ name = "Tactical Armor Crate"
+ desc = "One set of well-rounded tactical armor. While it does not protect the limbs, the vest is fairly durable. The set includes a helmet and vest."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/armor/vest/marine,
+ /obj/item/clothing/head/helmet/bulletproof/x11)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/armor/medium_marine_armor
+ name = "Medium Tactical Armor Crate"
+ desc = "One set of well-rounded medium tactical body armor. Plates are attached to the vest and cover the limbs. The set includes a helmet and chestpiece."
+ cost = 3000
+ contains = list(/obj/item/clothing/suit/armor/vest/marine/medium,
+ /obj/item/clothing/head/helmet/bulletproof/x11)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+//clip
+
+/datum/supply_pack/armor/clip_armor
+ name = "X-11 Armor Crate"
+ desc = "One set of Lanchester Manufacturing-manufactured X-11 armor, sold at a discount to the Confederated League due to a recent contract."
+ cost = 1250
+ contains = list(/obj/item/clothing/suit/armor/vest/bulletproof,
+ /obj/item/clothing/head/helmet/bulletproof/x11/clip,
+ /obj/item/clothing/mask/gas/clip)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/clip
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/armor/clip_riot
+ name = "CLIP Riot Armor Crate"
+ desc = "One set of Clover Corp-manufactured Riot armor, traditionally issued to BARD for xenofauna removal, but available to League vessels deployed in the Frontier due to high Xenofauna density."
+ cost = 1000
+ contains = list(/obj/item/clothing/suit/armor/riot/clip,
+ /obj/item/clothing/head/helmet/riot/clip,
+ /obj/item/clothing/mask/gas/clip)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/clip
+ faction_discount = 0
+ faction_locked = TRUE
+
+//gezena
+/datum/supply_pack/armor/pgf_armor
+ name = "Raksha-plate Crate"
+ desc = "One set of standard issue Raksha-plate armor, highly protective and very mobile. The helmet is adjustable for horns."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/armor/gezena/marine,
+ /obj/item/clothing/head/helmet/gezena)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/pgf
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/armor/pgf_armor
+ name = "Navywear Coat Crate"
+ desc = "One replacement navywear coat. The pricing is unfortunately high to discourage distribution to marines, and encourage servicemen to keep track of their jacket."
+ cost = 1000
+ contains = list(/obj/item/clothing/suit/armor/gezena)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/pgf
+ faction_discount = 0
+ faction_locked = TRUE
+
+//jardliner
+
+/datum/supply_pack/armor/hardliner_armor
+ name = "Hardliner Armor Crate"
+ desc = "One set of well-rounded hardliner body armor. Well. Rounded aside from the painfully obvious white. Subsidized by Cybersun Biodynamics."
+ cost = 500
+ contains = list(/obj/item/clothing/suit/armor/hardliners,
+ /obj/item/clothing/head/helmet/hardliners)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/hardliners
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/armor/hardliner_mecha_armor
+ name = "Hardliner Pilot Armor Crate"
+ desc = "One set of armor manufactured for Hardliner exosuit pilots. The jacket is often sought out by those outside of it as a keepsake."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/armor/hardliners/jacket,
+ /obj/item/clothing/head/helmet/hardliners/swat)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/hardliners
+ faction_discount = 0
+ faction_locked = TRUE
+
+//ngr
+/datum/supply_pack/armor/ngr_armor
+ name = "NGR Armor Crate"
+ desc = "One fairly durable, well manufactured type-1 armor vest and associated helmet, painted in the proud reds of the New Gorlex Republic."
+ cost = 1000
+ contains = list(/obj/item/clothing/suit/armor/ngr,
+ /obj/item/clothing/head/helmet/ngr)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/ngr
+ faction_discount = 0
+ faction_locked = TRUE
+
+//srm
+
+/datum/supply_pack/armor/srm_duster
+ name = "SRM Duster Crate"
+ desc = "One hand-stitched duster for a proud Roumainian to wear into the Hunt."
+ cost = 500
+ contains = list(/obj/item/clothing/suit/armor/roumain)
+ crate_name = "duster crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/srm
+ faction_discount = 0
+ faction_locked = TRUE
+
+//coalition
+
+/datum/supply_pack/armor/coalition_armor
+ name = "Coalition Armor Crate"
+ desc = "An surplus plate carrier left over from the ICW. Its still painted in Coalition colors and likely to trigger IFF on turrets around the Frontier."
+ cost = 750
+ contains = list(/obj/item/clothing/suit/armor/vest/syndie,
+ /obj/item/clothing/head/helmet/syndie)
+ crate_name = "armor crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate
+ faction_discount = 0
+ faction_locked = TRUE
+
+
diff --git a/code/modules/cargo/packs/spacesuit_armor.dm b/code/modules/cargo/packs/spacesuit_armor.dm
deleted file mode 100644
index d0b1da6be6d2..000000000000
--- a/code/modules/cargo/packs/spacesuit_armor.dm
+++ /dev/null
@@ -1,144 +0,0 @@
-/datum/supply_pack/spacesuit_armor
- group = "Spacesuits & Armor"
- crate_type = /obj/structure/closet/crate/secure
-
-/*
- Spacesuits (two parts, helm and suit)
-*/
-
-/datum/supply_pack/spacesuit_armor/spacesuit
- name = "Space Suit Crate"
- desc = "Contains one basic space suit. Although the technology is centuries old, it should protect you from the vacuum of space."
- cost = 500
- contains = list(/obj/item/clothing/suit/space,
- /obj/item/clothing/head/helmet/space)
- crate_name = "space suit crate"
-
-/datum/supply_pack/spacesuit_armor/pilot_spacesuit
- name = "Pilot Space Suit Crate"
- desc = "One pilot space suit, for improved mobility in exosuits."
- cost = 750
- contains = list(/obj/item/clothing/suit/space/pilot,
- /obj/item/clothing/head/helmet/space/pilot/random)
- crate_name = "pilot space suit crate"
-
-/datum/supply_pack/spacesuit_armor/mining_hardsuits_indie
- name = "Mining Hardsuit Crate"
- desc = "One independent-manufactured mining hardsuit, for when explorer suits just dont cut it."
- cost = 1500
- contains = list(/obj/item/clothing/suit/space/hardsuit/mining/independent)
- crate_name = "mining hardsuit crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/med_hardsuit
- name = "Medical Hardsuit Crate"
- desc = "One medical hardsuit, resistant to diseases and useful for retrieving patients in space."
- cost = 1500
- contains = list(/obj/item/clothing/suit/space/hardsuit/medical)
- crate_name = "medical hardsuit crate"
- crate_type = /obj/structure/closet/crate/medical
- faction = /datum/faction/nt
-
-/datum/supply_pack/spacesuit_armor/mining_hardsuit_heavy
- name = "Heavy Mining Hardsuit Crate"
- desc = "One deluxe heavy mining hardsuit for dangerous frontier operations. Comes with a pair of EXOCOM jet boots."
- cost = 3500
- contains = list(/obj/item/clothing/suit/space/hardsuit/mining/heavy,
- /obj/item/clothing/shoes/bhop)
- crate_name = "heavy mining hardsuit crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
- faction = /datum/faction/nt
-
-/datum/supply_pack/spacesuit_armor/sec_hardsuit_bundle
- name = "Security Hardsuit Crate"
- desc = "Contains one security hardsuit for light combat duty."
- cost = 2500
- contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent)
- crate_name = "security hardsuit crate"
- crate_type = /obj/structure/closet/crate/secure/gear
- faction = /datum/faction/nt
-
-/datum/supply_pack/spacesuit_armor/sci_hardsuit
- name = "Science Hardsuit Crate"
- desc = "Contains one science hardsuit, designed to provide safety under advanced experimental conditions."
- cost = 2000
- contains = list(/obj/item/clothing/suit/space/hardsuit/rd)
- crate_name = "science hardsuit crate"
- crate_type = /obj/structure/closet/crate/secure/science
- faction = /datum/faction/nt
-
-/datum/supply_pack/spacesuit_armor/engi_spacesuit_bundle
- name = "Engineering Space Suit Crate"
- desc = "Need to turn your ship into a safety hazard? Not a problem! This engineering space suit will help get the job done."
- cost = 1500
- contains = list(/obj/item/clothing/suit/space/engineer,
- /obj/item/clothing/head/helmet/space/light/engineer)
- crate_name = "engineering space suit crate"
- crate_type = /obj/structure/closet/crate/secure/engineering
-
-/datum/supply_pack/spacesuit_armor/atmos_hardsuit
- name = "Atmospherics Hardsuit Crate"
- desc = "The iconic hardsuit of Nanotrasen's Atmosphere Corps, this hardsuit is known across space as a symbol of defiance in the face of sudden decompression. Smells faintly of plasma."
- cost = 2500
- contains = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos)
- crate_name = "atmospherics hardsuit crate"
- crate_type = /obj/structure/closet/crate/secure/engineering
- faction = /datum/faction/nt
-
-/*
- Non-spaceworthy (armor)
-*/
-
-/datum/supply_pack/spacesuit_armor/basic_armor
- name = "Armor Crate"
- desc = "One set of well-rounded body armor. The set includes a helmet and vest."
- cost = 750
- contains = list(/obj/item/clothing/suit/armor/vest,
- /obj/item/clothing/head/helmet/sec)
- crate_name = "armor crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/riot_armor
- name = "Riot Armor Crate"
- desc = "Contains one full set of riot armor. Although heavily padded to deal with close-quarters threats, they perform poorly against most firearms."
- cost = 1500
- contains = list(/obj/item/clothing/suit/armor/riot,
- /obj/item/clothing/head/helmet/riot)
- crate_name = "riot armor crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/bullet_armor
- name = "Bulletproof Armor Crate"
- desc = "Contains one full set of bulletproof armor, guaranteed to reduce a bullet's stopping power by half but with limited protection against melee weaponry."
- cost = 1750
- contains = list(/obj/item/clothing/suit/armor/vest/bulletproof,
- /obj/item/clothing/head/helmet/bulletproof,
- /obj/item/clothing/glasses/sunglasses/ballistic)
- crate_name = "bulletproof armor crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/laser_armor
- name = "Reflector Vest Crate"
- desc = "Contains one vest made of highly reflective material. The armor piece diffuses a laser's energy by over half, as well as offering a good chance to reflect the laser entirely."
- cost = 1500
- contains = list(/obj/item/clothing/suit/armor/laserproof)
- crate_name = "reflector vest crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/marine_armor
- name = "Tactical Armor Crate"
- desc = "One set of well-rounded tactical armor. While it does not protect the limbs, the vest is fairly durable. The set includes a helmet and vest."
- cost = 1500
- contains = list(/obj/item/clothing/suit/armor/vest/marine,
- /obj/item/clothing/head/helmet/bulletproof/x11)
- crate_name = "armor crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
-
-/datum/supply_pack/spacesuit_armor/medium_marine_armor
- name = "Medium Tactical Armor Crate"
- desc = "One set of well-rounded medium tactical body armor. Plates are attached to the vest and cover the limbs. The set includes a helmet and chestpiece."
- cost = 3000
- contains = list(/obj/item/clothing/suit/armor/vest/marine/medium,
- /obj/item/clothing/head/helmet/bulletproof/x11)
- crate_name = "armor crate"
- crate_type = /obj/structure/closet/crate/secure/plasma
diff --git a/code/modules/cargo/packs/spacesuits.dm b/code/modules/cargo/packs/spacesuits.dm
new file mode 100644
index 000000000000..6c02599c7ee2
--- /dev/null
+++ b/code/modules/cargo/packs/spacesuits.dm
@@ -0,0 +1,321 @@
+/datum/supply_pack/spacesuits
+ group = "Spacesuits"
+ crate_type = /obj/structure/closet/crate/secure
+
+/*
+ Spacesuits (two parts, helm and suit)
+*/
+
+/datum/supply_pack/spacesuits/spacesuit
+ name = "Space Suit Crate"
+ desc = "Contains one basic space suit. Although the technology is centuries old, it should protect you from the vacuum of space."
+ cost = 500
+ contains = list(/obj/item/clothing/suit/space,
+ /obj/item/clothing/head/helmet/space)
+ crate_name = "space suit crate"
+
+/datum/supply_pack/spacesuits/pilot_spacesuit
+ name = "Pilot Space Suit Crate"
+ desc = "One pilot space suit, for improved mobility in exosuits."
+ cost = 750
+ contains = list(/obj/item/clothing/suit/space/pilot,
+ /obj/item/clothing/head/helmet/space/pilot/random)
+ crate_name = "pilot space suit crate"
+
+/datum/supply_pack/spacesuits/engi_spacesuit
+ name = "Engineering Space Suit Crate"
+ desc = "Need to turn your ship into a safety hazard? Not a problem! This engineering space suit will help get the job done."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/space/engineer,
+ /obj/item/clothing/head/helmet/space/light/engineer)
+ crate_name = "engineering space suit crate"
+ crate_type = /obj/structure/closet/crate/secure/engineering
+
+//syndicate
+
+/datum/supply_pack/spacesuits/armored_spacesuit
+ name = "Armored Space Suit Crate"
+ desc = "Contains one armored spacesuit. Generic enough to be manufactured and distributed by most ex-Coalition groups."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/space/syndicate/black,
+ /obj/item/clothing/head/helmet/space/syndicate/black)
+ faction = /datum/faction/syndicate
+ faction_discount = 30
+
+/datum/supply_pack/spacesuits/armored_engi_spacesuit
+ name = "Coalition Engineering Space Suit Crate"
+ desc = "Contains one lightly armored engineering spacesuit. Generic enough to be manufactured by most ex-Coalition groups."
+ cost = 1000
+ contains = list(/obj/item/clothing/suit/space/syndicate/black/engie,
+ /obj/item/clothing/head/helmet/space/syndicate/black/engie)
+ faction = /datum/faction/syndicate
+ faction_locked = TRUE
+ faction_discount = 0
+
+//inteq
+
+/datum/supply_pack/spacesuits/spacesuit/inteq
+ name = "Inteq Space Suit Crate"
+ desc = "Contains one IRMG Space Suit, manufactured aboard the Mothership and widely distributed among Inteq. Most of the cost is logistical in nature."
+ cost = 500
+ contains = list(/obj/item/clothing/suit/space/inteq,
+ /obj/item/clothing/head/helmet/space/inteq)
+ crate_name = "space suit crate"
+ faction = /datum/faction/inteq
+ faction_discount = 0
+ faction_locked = TRUE
+
+//solgov
+
+/datum/supply_pack/spacesuits/spacesuit/solgov
+ name = "Solarian Vacsuit Crate"
+ desc = "Contains one Tortoise Microlite Armored Suit, the pride and joy of many Solarian explorers."
+ cost = 600
+ contains = list(/obj/item/clothing/suit/space/solgov,
+ /obj/item/clothing/head/helmet/space/solgov)
+ crate_name = "space suit crate"
+ faction = /datum/faction/solgov
+ faction_discount = 0
+ faction_locked = TRUE
+
+//fucking gezena
+
+/datum/supply_pack/spacesuits/spacesuit/pgf
+ name = "Rakalla Crate"
+ desc = "Contains one Rakalla Suit. It provides robust-enough protection from the elements while being quite flexible."
+ cost = 600
+ contains = list(/obj/item/clothing/suit/space/gezena,
+ /obj/item/clothing/head/helmet/space/gezena)
+ crate_name = "rakalla suit crate"
+ faction = /datum/faction/pgf
+ faction_discount = 0
+ faction_locked = TRUE
+
+
+/*
+ Hardsuits
+*/
+
+/datum/supply_pack/spacesuits/mining_hardsuits_indie
+ name = "Mining Hardsuit Crate"
+ desc = "One independent-manufactured mining hardsuit, for when explorer suits just dont cut it."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/space/hardsuit/mining/independent)
+ crate_name = "mining hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+
+/datum/supply_pack/spacesuits/sec_hardsuit_bundle
+ name = "Security Hardsuit Crate"
+ desc = "Contains one security hardsuit for light combat duty."
+ cost = 2000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent)
+ crate_name = "security hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+
+
+//nt hardsuit breaker
+
+/datum/supply_pack/spacesuits/med_hardsuit
+ name = "Medical Hardsuit Crate"
+ desc = "One medical hardsuit, resistant to diseases and useful for retrieving patients in space."
+ cost = 1500
+ contains = list(/obj/item/clothing/suit/space/hardsuit/medical)
+ crate_name = "medical hardsuit crate"
+ crate_type = /obj/structure/closet/crate/medical
+ faction = /datum/faction/nt
+
+/datum/supply_pack/spacesuits/engineering_hardsuit
+ name = "Engineering Hardsuit Crate"
+ desc = "One engineering hardsuit, resistant to fire, radiation, and other engineering hazards. Nanotrasen reminds you that Resistant does not mean Immune."
+ cost = 2500
+ contains = list(/obj/item/clothing/suit/space/hardsuit/engine)
+ crate_name = "engineering hardsuit crate"
+ crate_type = /obj/structure/closet/crate/medical
+ faction = /datum/faction/nt
+
+/datum/supply_pack/spacesuits/mining_hardsuit_heavy
+ name = "Heavy Mining Hardsuit Crate"
+ desc = "One heavy-duty mining hardsuit for dangerous frontier operations. Comes with a pair of EXOCOM jet boots."
+ cost = 3500
+ contains = list(/obj/item/clothing/suit/space/hardsuit/mining/heavy,
+ /obj/item/clothing/shoes/bhop)
+ crate_name = "heavy mining hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/plasma
+ faction = /datum/faction/nt
+
+/datum/supply_pack/spacesuits/sci_hardsuit
+ name = "Scientific Hardsuit Crate"
+ desc = "Contains one science hardsuit, designed to provide safety under advanced experimental conditions, or while handling explosives."
+ cost = 2000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/rd)
+ crate_name = "scientific hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/science
+ faction = /datum/faction/nt
+
+/datum/supply_pack/spacesuits/atmos_hardsuit
+ name = "Atmospherics Hardsuit Crate"
+ desc = "The iconic hardsuit of Nanotrasen's Atmosphere Corps, this hardsuit is known across space as a symbol of defiance in the face of sudden decompression. Smells faintly of plasma."
+ cost = 2500
+ contains = list(/obj/item/clothing/suit/space/hardsuit/engine/atmos)
+ crate_name = "atmospherics hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/engineering
+ faction = /datum/faction/nt
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/spacesuits/advanced_hardsuit
+ name = "Advanced Hardsuit Crate"
+ desc = "The culimination of research into robust engineering equipment. This hardsuit makes the wearer near immune to the natural hazards the Frontier can throw."
+ cost = 4000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/engine/elite)
+ crate_name = "advanced hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/engineering
+ faction = /datum/faction/nt
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/spacesuits/heavy_sec_hardsuit
+ name = "Heavy Security Hardsuit Crate"
+ desc = "Nanotrasen's premier solution to security hazards in low pressure environments, a well armored, highly mobile combat suit. The wearer is advised to have their zero-g training completed before utilizing the jetpack module."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/security/hos)
+ crate_name = "advanced hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/nt
+ faction_discount = 0
+ faction_locked = TRUE
+
+//general syndicate
+
+/datum/supply_pack/spacesuits/op_hardsuit //pls nerf
+ name = "Blood Red Hardsuit Crate"
+ desc = "The terrifying visage of a Blood-red Hardsuit has heralded the end of many corporate rats. This is most likely due to favorable survivablity onion ratings in its design."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi)
+ crate_name = "blood-red hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate
+ faction_locked = TRUE
+
+//cybersun breaker
+
+/datum/supply_pack/spacesuits/neutron_hardsuit
+ name = "Neutron Star Hardsuit Crate"
+ desc = "Cybersuns premier offering in the field of combat hardsuits, the Neutron Star is incredibly effective against lasers, but lacks against ballistic weaponry. "
+ cost = 3000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/cybersun)
+ crate_name = "neutron star hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/cybersun
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/spacesuits/cmt_hardsuit
+ name = "CMT Hardsuit Crate"
+ desc = "A reconfiguring of the Neutron Star hardsuit resulted in the CMT, or Cybersun Medical Technician hardsuit. The CMT protects against biological hazards, light weaponsfire, and the usual hazards of space."
+ cost = 2000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed)
+ crate_name = "neutron star hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/cybersun
+ faction_discount = 0
+ faction_locked = TRUE
+
+//inteq hardsuits
+
+/datum/supply_pack/spacesuits/pointman_hardsuit
+ name = "Pointman Hardsuit Crate"
+ desc = "The heaviest armor fielded by Inteq, the Pointman is a modification of surplus Blood-Red hardsuits retrofitted to fit the IRMG's mission profile."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/inteq)
+ crate_name = "pointman hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/inteq
+ faction_locked = TRUE
+
+/datum/supply_pack/spacesuits/inteq_hardsuit
+ name = "Inteq Hardsuit Crate"
+ desc = "A bulky Mothership-native design with a monocular viewport. The Inteq Hardsuit provides decent protection and combat manueverability for members of IRMG."
+ cost = 3000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/security/independent/inteq)
+ crate_name = "inteq hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/inteq
+ faction_discount = 0
+ faction_locked = TRUE
+
+//solarian hardsuit
+
+/datum/supply_pack/spacesuits/solar_hardsuit
+ name = "Solarian Hardsuit Crate"
+ desc = "A heavy duty hardsuit manufactured for the Solarian Confederation. It provides decent protection while making use of an exoskeleton to stay mobile."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/solgov)
+ crate_name = "solarian hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/solgov
+ faction_discount = 0
+ faction_locked = TRUE
+
+//clip jardsuits
+
+/datum/supply_pack/spacesuits/patroller_hardsuit
+ name = "Patroller Hardsuit Crate"
+ desc = "A lightly armored but highly manueverable suit utilized by the Confederated League. It allows the user to maintain a near full range of motion during usage."
+ cost = 2000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/clip_patroller)
+ crate_name = "patroller hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/clip
+ faction_discount = 0
+ faction_locked = TRUE
+
+/datum/supply_pack/spacesuits/spotter_hardsuit
+ name = "Spotter Hardsuit Crate"
+ desc = "A well armored hardsuit used as the counterpart to the Patroller, the Spotter lacks in mobility and makes up for it with bulky armor capable of protecting the user."
+ cost = 4000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/clip_spotter)
+ crate_name = "patroller hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/clip
+ faction_discount = 0
+ faction_locked = TRUE
+
+//jardline
+
+/datum/supply_pack/spacesuits/white_red_hardsuit
+ name = "White-Red Hardsuit Crate"
+ desc = "Cybersun Biodynamics's proudly manufactured modification to the original production of Blood Red Hardsuits. Excellent protect, excellent mobility, and only a questionable sense in coloration."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/hl)
+ crate_name = "white-red hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/hardliners
+ faction_discount = 0
+ faction_locked = TRUE
+
+//ngr
+
+/datum/supply_pack/spacesuits/beige_red_hardsuit
+ name = "Beige-Red Hardsuit Crate"
+ desc = "A widely producted variation on the classic Blood-Red hardsuit produced by factories with in the New Gorlex Republic. This suit protects the wearer with thick plates and stylish colors."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/syndi/ngr)
+ crate_name = "beige-red hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/syndicate/ngr
+ faction_discount = 0
+ faction_locked = TRUE
+
+//srm
+
+/datum/supply_pack/spacesuits/roumain_hardsuit
+ name = "Roumain Hardsuit Crate"
+ desc = "A hardsuit hand-crafted to resemble plate armor of yore, the Roumain Hardsuit allows the wearer to swiftly move whilst on the hunt, while protecting them from the beasts around them."
+ cost = 5000
+ contains = list(/obj/item/clothing/suit/space/hardsuit/solgov/roumain)
+ crate_name = "roumain hardsuit crate"
+ crate_type = /obj/structure/closet/crate/secure/gear
+ faction = /datum/faction/srm
+ faction_discount = 0
+ faction_locked = TRUE
diff --git a/code/modules/clothing/factions/clip.dm b/code/modules/clothing/factions/clip.dm
index cdb3dcfce757..41019a0e62ab 100644
--- a/code/modules/clothing/factions/clip.dm
+++ b/code/modules/clothing/factions/clip.dm
@@ -181,6 +181,8 @@
icon = 'icons/obj/clothing/faction/clip/suits.dmi'
mob_overlay_icon = 'icons/mob/clothing/faction/clip/suits.dmi'
+ slowdown = 0.2
+
icon_state = "hardsuit-clip-patrol"
hardsuit_type = "hardsuit-clip-patrol"
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clip_patroller
@@ -213,12 +215,12 @@
icon_state = "clip_spotter"
hardsuit_type = "clip_spotter"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80)
+ armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/clip_spotter
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
resistance_flags = null
- slowdown = 1
+ slowdown = 1.25
supports_variations = DIGITIGRADE_VARIATION_SAME_ICON_FILE
@@ -232,7 +234,7 @@
icon_state = "hardsuit0-clip_spotter"
hardsuit_type = "clip_spotter"
- armor = list("melee" = 50, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80)
+ armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 80)
resistance_flags = null
supports_variations = SNOUTED_VARIATION
diff --git a/code/modules/clothing/factions/hardliners.dm b/code/modules/clothing/factions/hardliners.dm
index a1fe2fe6b2ce..3f9f0f2871cb 100644
--- a/code/modules/clothing/factions/hardliners.dm
+++ b/code/modules/clothing/factions/hardliners.dm
@@ -71,6 +71,7 @@
icon = 'icons/obj/clothing/faction/hardliners/suits.dmi'
mob_overlay_icon = 'icons/mob/clothing/faction/hardliners/suits.dmi'
blood_overlay_type = "armor"
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) //ngr armor reskin - same statline
/obj/item/clothing/suit/armor/hardliners/jacket
name = "hardliners armored kutte"
@@ -80,6 +81,7 @@
icon = 'icons/obj/clothing/faction/hardliners/suits.dmi'
mob_overlay_icon = 'icons/mob/clothing/faction/hardliners/suits.dmi'
blood_overlay_type = "armor"
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) //its not like they cover your arms.
/obj/item/clothing/suit/armor/hardliners/sergeant
name = "hardliners sergeant jacket"
diff --git a/code/modules/clothing/factions/ngr.dm b/code/modules/clothing/factions/ngr.dm
index 366fa3b37cfe..81feb19e02c4 100644
--- a/code/modules/clothing/factions/ngr.dm
+++ b/code/modules/clothing/factions/ngr.dm
@@ -95,6 +95,7 @@
icon = 'icons/obj/clothing/faction/ngr/suits.dmi'
mob_overlay_icon = 'icons/mob/clothing/faction/ngr/suits.dmi'
blood_overlay_type = "armor"
+ armor = list("melee" = 35, "bullet" = 40, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) // 5. additional. bullet armor.
/obj/item/clothing/suit/armor/ngr/lieutenant
name = "\improper 2nd Battlegroup overcoat"
diff --git a/code/modules/clothing/factions/srm.dm b/code/modules/clothing/factions/srm.dm
index 34e6b4218fe4..481e9f1b0f52 100644
--- a/code/modules/clothing/factions/srm.dm
+++ b/code/modules/clothing/factions/srm.dm
@@ -95,7 +95,7 @@
worn_y_offset = 4
supports_variations = KEPORI_VARIATION
-/obj/item/clothing/suit/space/hardsuit/solgov/roumain
+/obj/item/clothing/suit/space/hardsuit/solgov/roumain //i swear to fuck whoever is subtyping these. you will face my wrath.
name = "\improper roumain hardsuit"
desc = "A hand-crafted suit of armor either modified from a set of normal plate armor or designed to resemble one. A powered exoskeleton has been cleverly integrated into the design and, surprisingly, it is completely vacuum-proof. Suits like this are a testament to what the master craftsmen of Hunter's Pride are capable of."
icon = 'icons/obj/clothing/faction/srm/suits.dmi'
diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm
index 3687ff2c166f..9a862d182129 100644
--- a/code/modules/clothing/outfits/standard.dm
+++ b/code/modules/clothing/outfits/standard.dm
@@ -88,15 +88,6 @@
mask = /obj/item/clothing/mask/breath
gloves = /obj/item/clothing/gloves/color/plasmaman
-/datum/outfit/chrono_agent
- name = "Timeline Eradication Agent"
- uniform = /obj/item/clothing/under/color/white
- suit = /obj/item/clothing/suit/space/chronos
- back = /obj/item/chrono_eraser
- head = /obj/item/clothing/head/helmet/space/chronos
- mask = /obj/item/clothing/mask/breath
- suit_store = /obj/item/tank/internals/oxygen
-
/datum/outfit/debug //Debug objs plus hardsuit
name = "Debug outfit"
uniform = /obj/item/clothing/under/misc/patriotsuit
diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm
index f540c175df5a..832f655051de 100644
--- a/code/modules/clothing/spacesuits/_spacesuits.dm
+++ b/code/modules/clothing/spacesuits/_spacesuits.dm
@@ -6,7 +6,7 @@
mob_overlay_icon = 'icons/mob/clothing/head/spacesuits.dmi'
icon_state = "spaceold"
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
- clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS //WS Port - Cit Internals
+ clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS
item_state = "spaceold"
permeability_coefficient = 0.01
armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70)
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
deleted file mode 100644
index 6bbde7b4a4dc..000000000000
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ /dev/null
@@ -1,346 +0,0 @@
-/obj/item/clothing/head/helmet/space/chronos
- name = "Chronosuit Helmet"
- desc = "A white helmet with an opaque blue visor."
- icon_state = "chronohelmet"
- item_state = "chronohelmet"
- slowdown = 1
- armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 100)
- resistance_flags = FIRE_PROOF | ACID_PROOF
- var/obj/item/clothing/suit/space/chronos/suit
-
-/obj/item/clothing/head/helmet/space/chronos/dropped()
- if(suit)
- suit.deactivate(1, 1)
- ..()
-
-/obj/item/clothing/head/helmet/space/chronos/Destroy()
- dropped()
- return ..()
-
-
-/obj/item/clothing/suit/space/chronos
- name = "Chronosuit"
- desc = "An advanced spacesuit equipped with time-bluespace teleportation and anti-compression technology."
- icon_state = "chronosuit"
- item_state = "chronosuit"
- actions_types = list(/datum/action/item_action/toggle)
- armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 60, "bomb" = 30, "bio" = 90, "rad" = 90, "fire" = 100, "acid" = 1000)
- resistance_flags = FIRE_PROOF | ACID_PROOF
- var/list/chronosafe_items = list(/obj/item/chrono_eraser, /obj/item/gun/energy/chrono_gun)
- var/obj/item/clothing/head/helmet/space/chronos/helmet
- var/obj/effect/chronos_cam/camera
- var/datum/action/innate/chrono_teleport/teleport_now = new
- var/activating = 0
- var/activated = 0
- var/cooldowntime = 50 //deciseconds
- var/teleporting = 0
- var/phase_timer_id
-
-/obj/item/clothing/suit/space/chronos/Initialize()
- teleport_now.chronosuit = src
- teleport_now.target = src
- return ..()
-
-/obj/item/clothing/suit/space/chronos/proc/new_camera(mob/user)
- if(camera)
- qdel(camera)
- camera = new /obj/effect/chronos_cam(user)
- camera.holder = user
- camera.chronosuit = src
- user.reset_perspective(camera)
- user.set_machine(camera)
- user.remote_control = camera
-
-/obj/item/clothing/suit/space/chronos/ui_action_click()
- if((cooldown <= world.time) && !teleporting && !activating)
- if(!activated)
- activate()
- else
- deactivate()
-
-/obj/item/clothing/suit/space/chronos/dropped()
- if(activated)
- deactivate()
- ..()
-
-/obj/item/clothing/suit/space/chronos/Destroy()
- dropped()
- QDEL_NULL(teleport_now)
- return ..()
-
-/obj/item/clothing/suit/space/chronos/emp_act(severity)
- . = ..()
- if(. & EMP_PROTECT_SELF)
- return
- var/mob/living/carbon/human/user = src.loc
- switch(severity)
- if(1)
- if(activated && user && ishuman(user) && (user.wear_suit == src))
- to_chat(user, "E:FATAL:RAM_READ_FAIL\nE:FATAL:STACK_EMPTY\nE:FATAL:READ_NULL_POINT\nE:FATAL:PWR_BUS_OVERLOAD")
- to_chat(user, "An electromagnetic pulse disrupts your [name] and violently tears you out of time-bluespace!")
- user.emote("scream")
- deactivate(1, 1)
-
-/obj/item/clothing/suit/space/chronos/proc/finish_chronowalk(mob/living/carbon/human/user, turf/to_turf)
- if(!user)
- user = src.loc
- if(phase_timer_id)
- deltimer(phase_timer_id)
- phase_timer_id = 0
- if(istype(user))
- if(to_turf)
- user.forceMove(to_turf)
- user.SetStun(0)
- user.next_move = 1
- user.alpha = 255
- user.update_atom_colour()
- user.animate_movement = FORWARD_STEPS
- user.notransform = 0
- user.set_anchored(FALSE)
- teleporting = 0
- for(var/obj/item/I in user.held_items)
- REMOVE_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- if(camera)
- camera.remove_target_ui()
- camera.forceMove(user)
- user.reset_perspective(camera)
- teleport_now.UpdateButtonIcon()
-
-/obj/item/clothing/suit/space/chronos/proc/chronowalk(atom/location)
- var/mob/living/carbon/human/user = src.loc
- if(activated && !teleporting && user && istype(user) && location && user.loc && location.loc && user.wear_suit == src && user.stat == CONSCIOUS)
- teleporting = 1
- var/turf/from_turf = get_turf(user)
- var/turf/to_turf = get_turf(location)
- var/distance = cheap_hypotenuse(from_turf.x, from_turf.y, to_turf.x, to_turf.y)
- var/phase_in_ds = distance*2
-
- if(camera)
- camera.remove_target_ui()
-
- teleport_now.UpdateButtonIcon()
-
- var/list/nonsafe_slots = list(ITEM_SLOT_BELT, ITEM_SLOT_BACK)
- var/list/exposed = list()
- for(var/slot in nonsafe_slots)
- var/obj/item/slot_item = user.get_item_by_slot(slot)
- exposed += slot_item
- exposed += user.held_items
- for(var/exposed_item in exposed)
- var/obj/item/exposed_I = exposed_item
- if(exposed_I && !(exposed_I.type in chronosafe_items) && user.dropItemToGround(exposed_I))
- to_chat(user, "Your [exposed_I.name] got left behind.")
-
- user.ExtinguishMob()
-
- for(var/obj/item/I in user.held_items)
- ADD_TRAIT(I, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- user.animate_movement = NO_STEPS
- user.changeNext_move(8 + phase_in_ds)
- user.notransform = 1
- user.set_anchored(TRUE)
- user.Stun(INFINITY)
-
- animate(user, color = "#00ccee", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
-
-/obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds)
- if(teleporting && activated && user)
- animate(user, color = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0), time = 2)
- phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
- else
- finish_chronowalk(user, to_turf)
-
-/obj/item/clothing/suit/space/chronos/proc/phase_3(mob/living/carbon/human/user, turf/to_turf, phase_in_ds)
- if(teleporting && activated && user)
- user.forceMove(to_turf)
- animate(user, color = "#00ccee", time = phase_in_ds)
- phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE)
- else
- finish_chronowalk(user, to_turf)
-
-/obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf)
- if(teleporting && activated && user)
- animate(user, color = "#ffffff", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE)
- else
- finish_chronowalk(user, to_turf)
-
-/obj/item/clothing/suit/space/chronos/process()
- if(activated)
- var/mob/living/carbon/human/user = src.loc
- if(user && ishuman(user) && (user.wear_suit == src))
- if(camera && (user.remote_control == camera))
- if(!teleporting)
- if(camera.loc != user && ((camera.x != user.x) || (camera.y != user.y) || (camera.virtual_z() != user.virtual_z())))
- if(camera.phase_time <= world.time)
- chronowalk(camera)
- else
- camera.remove_target_ui()
- else
- new_camera(user)
- else
- STOP_PROCESSING(SSobj, src)
-
-/obj/item/clothing/suit/space/chronos/proc/activate()
- if(!activating && !activated && !teleporting)
- activating = 1
- var/mob/living/carbon/human/user = src.loc
- if(user && ishuman(user) && user.wear_suit == src)
- to_chat(user, "\nChronosuitMK4 login: root")
- to_chat(user, "Password:\n")
- to_chat(user, "root@ChronosuitMK4# chronowalk4 --start\n")
- if(user.head && istype(user.head, /obj/item/clothing/head/helmet/space/chronos))
- to_chat(user, "\[ ok \] Mounting /dev/helm")
- helmet = user.head
- ADD_TRAIT(helmet, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- helmet.suit = src
- ADD_TRAIT(src, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- to_chat(user, "\[ ok \] Starting brainwave scanner")
- to_chat(user, "\[ ok \] Starting ui display driver")
- to_chat(user, "\[ ok \] Initializing chronowalk4-view")
- new_camera(user)
- START_PROCESSING(SSobj, src)
- activated = 1
- else
- to_chat(user, "\[ fail \] Mounting /dev/helm")
- to_chat(user, "FATAL: Unable to locate /dev/helm. Aborting...")
- teleport_now.Grant(user)
- cooldown = world.time + cooldowntime
- activating = 0
-
-/obj/item/clothing/suit/space/chronos/proc/deactivate(force = 0, silent = FALSE)
- if(activated && (!teleporting || force))
- activating = 1
- var/mob/living/carbon/human/user = src.loc
- var/hard_landing = teleporting && force
- REMOVE_TRAIT(src, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- cooldown = world.time + cooldowntime * 1.5
- activated = 0
- activating = 0
- finish_chronowalk()
- if(user && ishuman(user))
- teleport_now.Remove(user)
- if(user.wear_suit == src)
- if(hard_landing)
- user.electrocute_act(35, src, flags = SHOCK_NOGLOVES)
- user.Paralyze(200)
- if(!silent)
- to_chat(user, "\nroot@ChronosuitMK4# chronowalk4 --stop\n")
- if(camera)
- to_chat(user, "\[ ok \] Sending TERM signal to chronowalk4-view")
- if(helmet)
- to_chat(user, "\[ ok \] Stopping ui display driver")
- to_chat(user, "\[ ok \] Stopping brainwave scanner")
- to_chat(user, "\[ ok \] Unmounting /dev/helmet")
- to_chat(user, "logout")
- if(helmet)
- REMOVE_TRAIT(helmet, TRAIT_NODROP, CHRONOSUIT_TRAIT)
- helmet.suit = null
- helmet = null
- user.reset_perspective()
- user.set_machine()
- user.remote_control = null
- if(camera)
- QDEL_NULL(camera)
-
-/obj/effect/chronos_cam
- name = "Chronosuit View"
- density = FALSE
- anchored = TRUE
- invisibility = INVISIBILITY_ABSTRACT
- opacity = FALSE
- mouse_opacity = MOUSE_OPACITY_TRANSPARENT
- var/mob/holder
- var/phase_time = 0
- var/phase_time_length = 3
- var/atom/movable/screen/chronos_target/target_ui
- var/obj/item/clothing/suit/space/chronos/chronosuit
-
-/obj/effect/chronos_cam/singularity_act()
- return
-
-/obj/effect/chronos_cam/singularity_pull()
- return
-
-/obj/effect/chronos_cam/proc/create_target_ui()
- if(holder && holder.client && chronosuit)
- if(target_ui)
- remove_target_ui()
- target_ui = new(src, holder)
- holder.client.screen += target_ui
-
-/obj/effect/chronos_cam/proc/remove_target_ui()
- if(target_ui)
- QDEL_NULL(target_ui)
-
-/obj/effect/chronos_cam/relaymove(mob/living/user, direction)
- if(!holder)
- qdel(src)
- return
- if(user == holder)
- if(loc == user || (user.client && user.client.eye != src))
- forceMove(user.drop_location())
- user.set_machine(src)
- user.reset_perspective(src)
- var/atom/step = get_step(src, direction)
- if(step)
- if((step.x <= TRANSITIONEDGE) || (step.x >= (world.maxx - TRANSITIONEDGE - 1)) || (step.y <= TRANSITIONEDGE) || (step.y >= (world.maxy - TRANSITIONEDGE - 1)))
- if(!Move(step))
- forceMove(step)
- else
- forceMove(step)
- if((x == holder.x) && (y == holder.y) && (z == holder.z))
- forceMove(user)
- user.reset_perspective(user)
- remove_target_ui()
- else if(!target_ui)
- create_target_ui()
- phase_time = world.time + phase_time_length
-
-/obj/effect/chronos_cam/check_eye(mob/user)
- if(user != holder)
- qdel(src)
-
-/obj/effect/chronos_cam/on_unset_machine(mob/user)
- user.reset_perspective(null)
-
-/obj/effect/chronos_cam/Destroy()
- if(holder)
- if(holder.remote_control == src)
- holder.remote_control = null
- if(holder.client && (holder.machine == src))
- holder.unset_machine()
- return ..()
-
-/atom/movable/screen/chronos_target
- name = "target display"
- screen_loc = "CENTER,CENTER"
- color = list(1,0,0,0, 0,1,0,0.8, 0,0,1,0.933, 0,0,0,0, 0,0,0,0)
- appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE
-
-/atom/movable/screen/chronos_target/Initialize(mapload, mob/living/carbon/human/user)
- if(user)
- vis_contents += user
- else
- qdel(src)
- return ..()
-
-/datum/action/innate/chrono_teleport
- name = "Teleport Now"
- icon_icon = 'icons/mob/actions/actions_minor_antag.dmi'
- button_icon_state = "chrono_phase"
- check_flags = AB_CHECK_CONSCIOUS //|AB_CHECK_INSIDE
- var/obj/item/clothing/suit/space/chronos/chronosuit = null
-
-/datum/action/innate/chrono_teleport/Destroy()
- chronosuit = null
- return ..()
-
-/datum/action/innate/chrono_teleport/IsAvailable()
- return (chronosuit && chronosuit.activated && chronosuit.camera && !chronosuit.teleporting)
-
-/datum/action/innate/chrono_teleport/Activate()
- if(IsAvailable())
- if(chronosuit.camera)
- chronosuit.chronowalk(chronosuit.camera)
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 6542baf36c16..23b6017a94dc 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -226,7 +226,7 @@
item_state = "atmo_helm"
hardsuit_type = "atmospherics"
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
- heat_protection = HEAD //Uncomment to enable firesuit protection
+ heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
/obj/item/clothing/suit/space/hardsuit/engine/atmos
@@ -234,8 +234,8 @@
desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding."
icon_state = "hardsuit-atmospherics"
item_state = "atmo_hardsuit"
- armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
- heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
+ armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 25, "fire" = 100, "acid" = 75)
+ heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
@@ -540,31 +540,6 @@
hardsuit_type = "pointman"
full_retraction = TRUE
- //Wizard hardsuit
-/obj/item/clothing/head/helmet/space/hardsuit/wizard
- name = "gem-encrusted hardsuit helmet"
- desc = "A bizarre gem-encrusted helmet that radiates magical energies."
- icon_state = "hardsuit0-wiz"
- item_state = "wiz_helm"
- hardsuit_type = "wiz"
- resistance_flags = FIRE_PROOF | ACID_PROOF //No longer shall our kind be foiled by lone chemists with spray bottles!
- armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
- heat_protection = HEAD //Uncomment to enable firesuit protection
- max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
-
-/obj/item/clothing/suit/space/hardsuit/wizard
- name = "gem-encrusted hardsuit"
- desc = "A bizarre gem-encrusted suit that radiates magical energies."
- icon_state = "hardsuit-wiz"
- item_state = "wiz_hardsuit"
- w_class = WEIGHT_CLASS_NORMAL
- resistance_flags = FIRE_PROOF | ACID_PROOF
- armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100)
- allowed = list(/obj/item/teleportation_scroll, /obj/item/tank/internals)
- heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
- max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
- helmettype = /obj/item/clothing/head/helmet/space/hardsuit/wizard
-
//Medical hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/medical
name = "medical hardsuit helmet"
@@ -584,7 +559,7 @@
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/storage/firstaid, /obj/item/healthanalyzer, /obj/item/stack/medical)
armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
- slowdown = 0.5
+ slowdown = 0.3
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
/obj/item/clothing/head/helmet/space/hardsuit/medical/cmo
@@ -598,13 +573,13 @@
//Research Director hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/rd
- name = "prototype hardsuit helmet"
+ name = "scientific hardsuit helmet"
desc = "A prototype helmet designed for research in a hazardous, low pressure environment. Scientific data flashes across the visor."
icon_state = "hardsuit0-rd"
hardsuit_type = "rd"
resistance_flags = ACID_PROOF | FIRE_PROOF
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
- armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
+ armor = list("melee" = 30, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
var/explosion_detection_dist = 21
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SCAN_REAGENTS | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS //WS Port - Cit Internals
actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner)
@@ -635,7 +610,7 @@
display_visor_message("Explosion detected! Epicenter: [devastation_range], Outer: [heavy_impact_range], Shock: [light_impact_range]")
/obj/item/clothing/suit/space/hardsuit/rd
- name = "prototype hardsuit"
+ name = "scientific hardsuit"
desc = "A prototype suit that protects against hazardous, low pressure environments. Fitted with extensive plating for handling explosives and dangerous research materials."
icon_state = "hardsuit-rd"
item_state = "hardsuit-rd"
@@ -646,7 +621,8 @@
/obj/item/gun/energy/wormhole_projector,
/obj/item/hand_tele,
/obj/item/aicard)
- armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
+ slowdown = 1.5
+ armor = list("melee" = 30, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/rd
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
@@ -657,7 +633,7 @@
icon_state = "hardsuit0-sec"
item_state = "sec_helm"
hardsuit_type = "sec"
- armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
+ armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
/obj/item/clothing/suit/space/hardsuit/security
@@ -665,7 +641,7 @@
name = "security hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
- armor = list("melee" = 35, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
+ armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
slowdown = 0.5
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
@@ -676,20 +652,21 @@
//Head of Security hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/security/hos
- name = "head of security's hardsuit helmet"
+ name = "heavy security hardsuit helmet"
desc = "A special bulky helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "hardsuit0-hos"
hardsuit_type = "hos"
- armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
+ armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
/obj/item/clothing/suit/space/hardsuit/security/hos
icon_state = "hardsuit-hos"
- name = "head of security's hardsuit"
+ name = "heavy security hardsuit"
desc = "A special bulky suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
- armor = list("melee" = 45, "bullet" = 25, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
+ armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95)
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
jetpack = /obj/item/tank/jetpack/suit
+ slowdown = 0.7
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
//SWAT MKII
@@ -982,6 +959,8 @@
///////////////Shiptest Additions////////////////////
+//this 'shiptest' server really needs to just add new files
+
//Softsuit helmet light framework
/obj/item/clothing/head/helmet/space/light
actions_types = list(/datum/action/item_action/toggle_helmet_light)
@@ -1068,7 +1047,7 @@
item_state = "space-independent-eng"
desc = "A civilian space suit designed for construction and salvage in hazardous, low-pressure environments. Has shielding against radiation and heat and abundant storage.
Though they lack the physical protection of more expensive hardsuits, this type of suit is extremely common wherever construction and salvage work must be done in open space."
siemens_coefficient = 0
- armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 20, "bomb" = 0, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
+ armor = list("melee" = 15, "bullet" = 5, "laser" = 20, "energy" = 10, "bomb" = 20, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75)
pocket_storage_component_path = /datum/component/storage/concrete/pockets/exo/large
resistance_flags = FIRE_PROOF
@@ -1172,21 +1151,26 @@
A.UpdateButtonIcon()
//Inteq Hardsuit
-/obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq
+/obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq //i fucking hate this typepath
name = "inteq hardsuit helmet"
desc = "A somewhat boxy, monocular visored helmet designed for hazardous, low pressure environments. It has the letters 'IRMG' imprinted onto the earpad."
icon_state = "hardsuit0-inteq"
item_state = "hardsuit-inteq"
hardsuit_type = "inteq"
+ armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
-/obj/item/clothing/suit/space/hardsuit/security/independent/inteq
+/obj/item/clothing/suit/space/hardsuit/security/independent/inteq //this one too. you know you can just redeclare variables and have shorter paths right? Fucking hardsuit/security/indepentent/inteq how about just /hardsuit/inteq did you ever think about that huh???
name = "inteq hardsuit"
desc = "A heavy-duty looking suit that protects against hazardous, low pressure environments. It's bulk provides ample protection, if not a bit cumbersome to wear."
icon_state = "hardsuit-inteq"
item_state = "hardsuit-inteq"
hardsuit_type = "inteq"
+
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/independent/inteq
supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION
+ armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
+
+//solarian
/obj/item/clothing/head/helmet/space/hardsuit/solgov
name = "\improper SolGov hardsuit helmet"
@@ -1196,7 +1180,7 @@
hardsuit_type = "solgov"
armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 60, "bio" = 100, "rad" = 60, "fire" = 90, "acid" = 75)
-/obj/item/clothing/suit/space/hardsuit/solgov
+/obj/item/clothing/suit/space/hardsuit/solgov //see this is a good path. not fucking /security/independant/inteq. its just /hardsuit/solgov
icon_state = "hardsuit_solgov"
name = "\improper SolGov hardsuit"
desc = "An armored spaceproof suit. A powered exoskeleton keeps the suit light and mobile."
@@ -1204,69 +1188,5 @@
armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 30, "bomb" = 60, "bio" = 100, "rad" = 60, "fire" = 90, "acid" = 75) //intentionally the fucking strong, this is master chief-tier armor //is this really what you call the strong?? is this the best solgov has to offer??????
helmettype = /obj/item/clothing/head/helmet/space/hardsuit/solgov
allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
- slowdown = 0.5
+ slowdown = 0.2
supports_variations = DIGITIGRADE_VARIATION
-
-/obj/item/clothing/head/helmet/space/hardsuit/quixote
- name = "\improper Quixote mobility hardsuit helmet"
- desc = "The integrated helmet of a Quixote mobility hardsuit."
- icon_state = "hardsuit0-quixote"
- item_state = "quixote-helm"
- max_integrity = 300
- armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 100)
- hardsuit_type = "quixote"
- max_heat_protection_temperature = 20000
-
-/obj/item/clothing/suit/space/hardsuit/quixote
- name = "\improper Quixote mobility hardsuit"
- desc = "The Quixote mobility suit is the magnum opus of Phorsman equipment, combining durable composite armor with high mobility thrusters."
- icon_state = "quixotesuit"
- item_state = "quixotesuit"
- max_integrity = 300
- armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 25, "bomb" = 50, "bio" = 100, "rad" = 60, "fire" = 50, "acid" = 100)
- allowed = list(/obj/item/gun, /obj/item/flashlight, /obj/item/tank/internals, /obj/item/ammo_box)
- actions_types = list(/datum/action/item_action/toggle_helmet)
- helmettype = /obj/item/clothing/head/helmet/space/hardsuit/quixote
- jetpack = /obj/item/tank/jetpack/suit
- slowdown = 0.3
- max_heat_protection_temperature = 20000
- var/datum/action/innate/quixotejump/jump
-
-/obj/item/clothing/suit/space/hardsuit/quixote/Initialize()
- . = ..()
- jump = new(src)
-
-/obj/item/clothing/suit/space/hardsuit/quixote/Destroy()
- QDEL_NULL(jump)
- return ..()
-
-/obj/item/clothing/suit/space/hardsuit/quixote/equipped(mob/user, slot)
- . = ..()
- if(slot == ITEM_SLOT_OCLOTHING)
- jump.Grant(user)
- user.update_icons()
- else //If it is equipped in any slot except for our outer clothing, we can't dash
- jump.Remove(user)
- user.update_icons()
-
-/obj/item/clothing/suit/space/hardsuit/quixote/dropped(mob/user)
- . = ..()
- jump.Remove(user)
- user.update_icons()
-
-/obj/item/clothing/suit/space/hardsuit/quixote/ui_action_click(mob/user, action)
- if(action == /datum/action/innate/quixotejump)
- jump.Activate()
- else
- return ..()
-
-/obj/item/clothing/head/helmet/space/hardsuit/quixote/dimensional
- name = "\improper Quixote metaspacial hardsuit helmet"
- desc = "The integrated helmet of a Quixote metaspace navigation hardsuit."
- armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
-
-/obj/item/clothing/suit/space/hardsuit/quixote/dimensional
- name = "\improper Quixote metaspacial hardsuit"
- armor = list("melee" = 50, "bullet" = 40, "laser" = 40, "energy" = 35, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
- desc = "The Quixote metaspacial mobility suit is the magnum opus of dimensional navigation equipment, combining durable composite armor with high mobility thrusters and defensive plating rated for all manner of exotic particles."
- helmettype = /obj/item/clothing/head/helmet/space/hardsuit/quixote/dimensional
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 8cf3da8547cd..f739afcf8219 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -536,6 +536,7 @@ Contains:
desc = "A lightly armored space suit for IRMG personnel for EVA operations, it seems more flexible than most space suits."
item_state = "space-inteq"
icon_state = "space-inteq"
+ slowdown = 0.8
armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 15, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75)
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index 2b2660af4f9c..aba5c3a18ba8 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -4,7 +4,7 @@
icon_state = "syndicate"
item_state = "syndicate"
desc = "An advanced, lightweight space helmet made of durable composites. Almost matches integrated hardsuit helmets for protection. Almost."
- armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75)
supports_variations = VOX_VARIATION
/obj/item/clothing/suit/space/syndicate
@@ -13,7 +13,7 @@
item_state = "space_suit_syndicate"
desc = "A space suit made of high-grade ballistic fabric with integrated armor plates. More compact than a normal space suit while almost matching powered hardsuits for protection. Almost."
w_class = WEIGHT_CLASS_NORMAL
- armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75)
+ armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 40, "bomb" = 20, "bio" = 100, "rad" = 30, "fire" = 75, "acid" = 75)
/obj/item/clothing/suit/space/syndicate/Initialize()
. = ..()
diff --git a/code/modules/faction/faction_datum.dm b/code/modules/faction/faction_datum.dm
index 487d4f9c7810..cc1595e55c2f 100644
--- a/code/modules/faction/faction_datum.dm
+++ b/code/modules/faction/faction_datum.dm
@@ -36,19 +36,24 @@
name = FACTION_NGR
short_name = "NGR"
prefixes = PREFIX_NGR
+ parent_faction = null
/datum/faction/syndicate/cybersun
name = FACTION_CYBERSUN
prefixes = PREFIX_CYBERSUN
+ parent_faction = null
/datum/faction/syndicate/hardliners
name = FACTION_HARDLINERS
prefixes = PREFIX_HARDLINERS
+ //holy fucking shit this system sucks
+ parent_faction = null
/datum/faction/syndicate/suns
name = FACTION_SUNS
short_name = "SUNS"
prefixes = PREFIX_SUNS
+ parent_faction = null
/datum/faction/solgov
name = FACTION_SOLGOV
diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm
index ac946eee3847..a4319f4a1b5f 100644
--- a/code/modules/holiday/holidays.dm
+++ b/code/modules/holiday/holidays.dm
@@ -79,7 +79,6 @@
name = "Groundhog Day"
begin_day = 2
begin_month = FEBRUARY
- drone_hat = /obj/item/clothing/head/helmet/space/chronos
/datum/holiday/groundhog/getStationPrefix()
return pick("Deja Vu") //I have been to this place before
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 58f726aa508e..5aa11efd6a6d 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -569,10 +569,6 @@
if("Paroled")
threatcount += 2
- //Check for dresscode violations
- if(istype(head, /obj/item/clothing/head/wizard) || istype(head, /obj/item/clothing/head/helmet/space/hardsuit/wizard))
- threatcount += 2
-
//Check for nonhuman scum
if(dna && dna.species.id && dna.species.id != SPECIES_HUMAN)
threatcount += 1
diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm
index bc453eecd3d1..78a4d08b0fe6 100644
--- a/code/modules/spells/spell.dm
+++ b/code/modules/spells/spell.dm
@@ -195,9 +195,7 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th
var/mob/living/carbon/human/H = user
var/list/casting_clothes = typecacheof(list(/obj/item/clothing/suit/wizrobe,
- /obj/item/clothing/suit/space/hardsuit/wizard,
/obj/item/clothing/head/wizard,
- /obj/item/clothing/head/helmet/space/hardsuit/wizard,
/obj/item/clothing/suit/space/hardsuit/shielded/wizard,
/obj/item/clothing/head/helmet/space/hardsuit/shielded/wizard))
diff --git a/shiptest.dme b/shiptest.dme
index 7be2c3a79893..29f325abe2d6 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -1962,6 +1962,7 @@
#include "code\modules\cargo\exports\weapons.dm"
#include "code\modules\cargo\packs\ammo.dm"
#include "code\modules\cargo\packs\animal.dm"
+#include "code\modules\cargo\packs\armor.dm"
#include "code\modules\cargo\packs\canister.dm"
#include "code\modules\cargo\packs\chemistry.dm"
#include "code\modules\cargo\packs\civilian.dm"
@@ -1977,7 +1978,7 @@
#include "code\modules\cargo\packs\mechs.dm"
#include "code\modules\cargo\packs\medical.dm"
#include "code\modules\cargo\packs\sec_supply.dm"
-#include "code\modules\cargo\packs\spacesuit_armor.dm"
+#include "code\modules\cargo\packs\spacesuits.dm"
#include "code\modules\cargo\packs\tools.dm"
#include "code\modules\cargo\packs\vendor_refill.dm"
#include "code\modules\cargo\packs\weapon_attachments.dm"
@@ -2068,7 +2069,6 @@
#include "code\modules\clothing\shoes\magboots.dm"
#include "code\modules\clothing\shoes\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\_spacesuits.dm"
-#include "code\modules\clothing\spacesuits\chronosuit.dm"
#include "code\modules\clothing\spacesuits\hardsuit.dm"
#include "code\modules\clothing\spacesuits\miscellaneous.dm"
#include "code\modules\clothing\spacesuits\plasmamen.dm"