diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index aeaebe6d843..fb8cbaf4304 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -694,7 +694,6 @@
/obj/structure/rack,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -3304,7 +3303,6 @@
/obj/item/tank/oxygen,
/obj/item/clothing/suit/space/hardsuit/security,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/security,
/obj/item/clothing/shoes/magboots,
/obj/item/tank/jetpack/oxygen,
/obj/item/radio/intercom{
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 6dd1a34d1cc..40fa9e02436 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -1887,7 +1887,6 @@
network = list("SS13")
},
/obj/item/clothing/suit/space/hardsuit/security,
-/obj/item/clothing/head/helmet/space/hardsuit/security,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -4310,7 +4309,6 @@
/obj/structure/rack,
/obj/item/clothing/suit/space/hardsuit/security,
/obj/item/clothing/mask/gas/sechailer,
-/obj/item/clothing/head/helmet/space/hardsuit/security,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
@@ -5439,7 +5437,6 @@
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/hardsuit/security,
/obj/item/clothing/mask/gas/sechailer,
-/obj/item/clothing/head/helmet/space/hardsuit/security,
/turf/simulated/floor/plasteel{
icon_state = "vault";
dir = 4
@@ -5657,7 +5654,6 @@
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/hardsuit/security,
/obj/item/clothing/mask/gas/sechailer,
-/obj/item/clothing/head/helmet/space/hardsuit/security,
/turf/simulated/floor/plasteel{
icon_state = "vault";
dir = 1
@@ -18917,9 +18913,8 @@
layer = 2.9
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/hardsuit/engineering,
+/obj/item/clothing/suit/space/hardsuit/engine,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/engineering,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -19707,9 +19702,8 @@
layer = 2.9
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/hardsuit/engineering,
+/obj/item/clothing/suit/space/hardsuit/engine,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/engineering,
/obj/effect/decal/warning_stripes/yellow/hollow,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -29963,9 +29957,8 @@
layer = 2.9
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/hardsuit/engineering,
+/obj/item/clothing/suit/space/hardsuit/engine,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/engineering,
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -30859,9 +30852,8 @@
layer = 2.9
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/hardsuit/engineering,
+/obj/item/clothing/suit/space/hardsuit/engine,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/engineering,
/obj/effect/decal/warning_stripes/southwest,
/turf/simulated/floor/plasteel,
/area/engine/engineering)
@@ -37931,7 +37923,6 @@
/obj/item/clothing/shoes/magboots/advance,
/obj/item/clothing/suit/space/hardsuit/elite,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/elite,
/turf/simulated/floor/plasteel{
icon_state = "vault";
dir = 5
@@ -59967,8 +59958,7 @@
/obj/structure/rack,
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/suit/space/hardsuit/atmos,
-/obj/item/clothing/head/helmet/space/hardsuit/atmos,
+/obj/item/clothing/suit/space/hardsuit/engine/atmos,
/obj/effect/decal/warning_stripes/west,
/turf/simulated/floor/plasteel,
/area/atmos)
@@ -62056,8 +62046,7 @@
/obj/structure/rack,
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/suit/space/hardsuit/atmos,
-/obj/item/clothing/head/helmet/space/hardsuit/atmos,
+/obj/item/clothing/suit/space/hardsuit/engine/atmos,
/turf/simulated/floor/plasteel{
dir = 9;
icon_state = "caution"
@@ -62070,8 +62059,7 @@
/obj/structure/rack,
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/suit/space/hardsuit/atmos,
-/obj/item/clothing/head/helmet/space/hardsuit/atmos,
+/obj/item/clothing/suit/space/hardsuit/engine/atmos,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "caution"
@@ -79079,7 +79067,6 @@
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/obj/item/radio/intercom{
dir = 1;
name = "Station Intercom (General)";
diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm
index f27926e04f9..5127b01ac31 100644
--- a/_maps/map_files/MetaStation/z2.dmm
+++ b/_maps/map_files/MetaStation/z2.dmm
@@ -4165,7 +4165,6 @@
/area/wizard_station)
"lC" = (
/obj/structure/rack,
-/obj/item/clothing/head/helmet/space/hardsuit/wizard,
/turf/unsimulated/floor{
tag = "icon-cult";
icon_state = "cult"
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
index 805f97b6784..62a22425926 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/abandonedzoo.dmm
@@ -397,7 +397,6 @@
/obj/structure/rack,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/tank/emergency_oxygen/double,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/turf/simulated/floor/plasteel{
icon_state = "dark"
},
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
index 3ba27975660..58eae91a94f 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/oldstation.dmm
@@ -4168,7 +4168,6 @@
"jB" = (
/obj/structure/table/reinforced,
/obj/item/clothing/suit/space/hardsuit/ancient,
-/obj/item/clothing/head/helmet/space/hardsuit/ancient,
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel{
icon_state = "white"
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
index 8f19d1cc390..fa38a1a647b 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/onehalf.dmm
@@ -1132,7 +1132,6 @@
/obj/item/reagent_containers/food/drinks/bottle/rum,
/obj/item/reagent_containers/food/drinks/bottle/rum,
/obj/item/folder/syndicate/blue,
-/obj/item/clothing/head/helmet/space/hardsuit/syndi,
/turf/simulated/floor/plating,
/area/ruin/onehalf/bridge)
"cN" = (
diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm
index 5d22afc5fcd..2f37e69604e 100644
--- a/_maps/map_files/RandomZLevels/academy.dmm
+++ b/_maps/map_files/RandomZLevels/academy.dmm
@@ -243,7 +243,6 @@
/obj/item/stack/sheet/mineral/silver{
amount = 20
},
-/obj/item/clothing/head/helmet/space/hardsuit/wizard,
/turf/simulated/floor/wood,
/area/awaymission/academy/headmaster)
"aM" = (
diff --git a/_maps/map_files/RandomZLevels/spacebattle.dmm b/_maps/map_files/RandomZLevels/spacebattle.dmm
index 17341581c9a..2525d05730f 100644
--- a/_maps/map_files/RandomZLevels/spacebattle.dmm
+++ b/_maps/map_files/RandomZLevels/spacebattle.dmm
@@ -406,7 +406,6 @@
/area/awaymission/spacebattle/syndicate3)
"bg" = (
/obj/structure/table/reinforced,
-/obj/item/clothing/head/helmet/space/hardsuit/syndi,
/turf/simulated/shuttle/floor{
icon_state = "floor4"
},
@@ -2261,7 +2260,6 @@
"hl" = (
/obj/structure/rack,
/obj/item/clothing/suit/space/hardsuit,
-/obj/item/clothing/head/helmet/space/hardsuit,
/turf/simulated/floor/plasteel,
/area/awaymission/spacebattle/cruiser)
"hn" = (
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index fea93c6a89e..661dca15a0e 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -547,7 +547,6 @@
/obj/structure/rack,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/turf/simulated/shuttle/floor{
icon_state = "floor3"
},
@@ -70883,7 +70882,6 @@
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/clothing/mask/gas,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/obj/machinery/door/window/westright{
name = "Emergency Hardsuits";
req_access_txt = "40"
@@ -70965,7 +70963,6 @@
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/hardsuit/medical,
/obj/item/clothing/mask/gas,
-/obj/item/clothing/head/helmet/space/hardsuit/medical,
/obj/machinery/door/window/westleft{
name = "Emergency Hardsuits";
req_access_txt = "40"
diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index d3417ba50f3..d913f56ddf9 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -8555,11 +8555,6 @@
/area/admin)
"uJ" = (
/obj/structure/rack,
-/obj/item/clothing/head/helmet/space/hardsuit/wizard{
- pixel_x = -3;
- pixel_y = 3
- },
-/obj/item/clothing/head/helmet/space/hardsuit/syndi,
/obj/item/clothing/head/helmet/space/santahat{
pixel_x = 3;
pixel_y = -3
@@ -11644,8 +11639,8 @@
/area/admin)
"AL" = (
/obj/structure/rack,
-/obj/item/storage/box/syndie_kit/hardsuit,
-/obj/item/storage/box/syndie_kit/elite_hardsuit{
+/obj/item/clothing/suit/space/hardsuit/syndi/elite,
+/obj/item/clothing/suit/space/hardsuit/syndi/elite{
pixel_x = -6;
pixel_y = 6
},
diff --git a/code/datums/outfits/outfit.dm b/code/datums/outfits/outfit.dm
index 6622e263789..625bffc4cec 100644
--- a/code/datums/outfits/outfit.dm
+++ b/code/datums/outfits/outfit.dm
@@ -19,6 +19,8 @@
var/suit_store = null
var/l_hand = null
var/r_hand = null
+ /// Should the toggle helmet proc be called on the helmet during equip
+ var/toggle_helmet = TRUE
var/pda = null
var/internals_slot = null //ID of slot containing a gas tank
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format
@@ -113,6 +115,10 @@
var/obj/item/organ/internal/O = new path(H)
O.insert(H)
+ if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit))
+ var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit
+ HS.ToggleHelmet()
+
post_equip(H, visualsOnly)
if(!visualsOnly)
@@ -180,7 +186,7 @@
var/stored_data = get_json_data()
var/json = json_encode(stored_data)
// Kinda annoying but as far as I can tell you need to make actual file.
- var/f = file("data/TempOutfitUpload")
+ var/f = file("data/TempOutfitUpload")
fdel(f)
WRITE_FILE(f, json)
admin << ftp(f, "[name].json")
@@ -190,6 +196,7 @@
name = outfit_data["name"]
uniform = text2path(outfit_data["uniform"])
suit = text2path(outfit_data["suit"])
+ toggle_helmet = text2path(outfit_data["toggle_helmet"])
back = text2path(outfit_data["back"])
belt = text2path(outfit_data["belt"])
gloves = text2path(outfit_data["gloves"])
diff --git a/code/datums/outfits/outfit_admin.dm b/code/datums/outfits/outfit_admin.dm
index 09282ec77b1..6ec670bf4f2 100644
--- a/code/datums/outfits/outfit_admin.dm
+++ b/code/datums/outfits/outfit_admin.dm
@@ -78,7 +78,6 @@
suit = /obj/item/clothing/suit/space/hardsuit/syndi
belt = /obj/item/storage/belt/military
- head = /obj/item/clothing/head/helmet/space/hardsuit/syndi
mask = /obj/item/clothing/mask/gas/syndicate
l_ear = /obj/item/radio/headset/syndicate/alt
glasses = /obj/item/clothing/glasses/night
@@ -110,7 +109,6 @@
/datum/outfit/admin/syndicate/operative/freedom
name = "Syndicate Freedom Operative"
suit = /obj/item/clothing/suit/space/hardsuit/syndi/freedom
- head = /obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
/datum/outfit/admin/syndicate_strike_team
@@ -794,41 +792,34 @@
/datum/outfit/admin/hardsuit/engineer
name = "Engineer Hardsuit"
- suit = /obj/item/clothing/suit/space/hardsuit
- head = /obj/item/clothing/head/helmet/space/hardsuit
+ suit = /obj/item/clothing/suit/space/hardsuit/engine
/datum/outfit/admin/hardsuit/ce
name = "CE Hardsuit"
- suit = /obj/item/clothing/suit/space/hardsuit/elite
- head = /obj/item/clothing/head/helmet/space/hardsuit/elite
+ suit = /obj/item/clothing/suit/space/hardsuit/engine/elite
shoes = /obj/item/clothing/shoes/magboots/advance
/datum/outfit/admin/hardsuit/mining
name = "Mining Hardsuit"
suit = /obj/item/clothing/suit/space/hardsuit/mining
- head = /obj/item/clothing/head/helmet/space/hardsuit/mining
/datum/outfit/admin/hardsuit/syndi
name = "Syndi Hardsuit"
suit = /obj/item/clothing/suit/space/hardsuit/syndi
- head = /obj/item/clothing/head/helmet/space/hardsuit/syndi
shoes = /obj/item/clothing/shoes/magboots/syndie
/datum/outfit/admin/hardsuit/wizard
name = "Wizard Hardsuit"
suit = /obj/item/clothing/suit/space/hardsuit/wizard
- head = /obj/item/clothing/head/helmet/space/hardsuit/wizard
shoes = /obj/item/clothing/shoes/magboots
/datum/outfit/admin/hardsuit/medical
name = "Medical Hardsuit"
suit = /obj/item/clothing/suit/space/hardsuit/medical
- head = /obj/item/clothing/head/helmet/space/hardsuit/medical
/datum/outfit/admin/hardsuit/atmos
name = "Atmos Hardsuit"
- suit = /obj/item/clothing/suit/space/hardsuit/atmos
- head = /obj/item/clothing/head/helmet/space/hardsuit/atmos
+ suit = /obj/item/clothing/suit/space/hardsuit/engine/atmos
/datum/outfit/admin/tournament
@@ -963,7 +954,6 @@
belt = /obj/item/claymore/ceremonial
gloves = /obj/item/clothing/gloves/combat
shoes = /obj/item/clothing/shoes/magboots
- head = /obj/item/clothing/head/helmet/space/hardsuit/singuloth
mask = /obj/item/clothing/mask/breath
l_ear = /obj/item/radio/headset/ert
glasses = /obj/item/clothing/glasses/meson/cyber
@@ -1111,7 +1101,6 @@
backpack_contents = list(
/obj/item/storage/box/engineer = 1,
/obj/item/clothing/suit/space/hardsuit/wizard = 1,
- /obj/item/clothing/head/helmet/space/hardsuit/wizard = 1,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/kitchen/knife/ritual = 1,
/obj/item/clothing/suit/wizrobe/red = 1,
diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm
index f0ba75d5e10..e35ca1eae9f 100644
--- a/code/datums/uplink_item.dm
+++ b/code/datums/uplink_item.dm
@@ -1313,7 +1313,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/suits/hardsuit/elite
name = "Elite Syndicate Hardsuit"
desc = "An advanced hardsuit with superior armor and mobility to the standard Syndicate Hardsuit."
- item = /obj/item/storage/box/syndie_kit/elite_hardsuit
+ item = /obj/item/clothing/suit/space/hardsuit/syndi/elite
cost = 8
reference = "ESHS"
excludefrom = list()
@@ -1322,7 +1322,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/suits/hardsuit/shielded
name = "Shielded Hardsuit"
desc = "An advanced hardsuit with built in energy shielding. The shields will rapidly recharge when not under fire."
- item = /obj/item/storage/box/syndie_kit/shielded_hardsuit
+ item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi
cost = 30
reference = "SHS"
excludefrom = list()
diff --git a/code/game/gamemodes/wizard/rightandwrong.dm b/code/game/gamemodes/wizard/rightandwrong.dm
index deb054f6d3e..e69a4b7ec79 100644
--- a/code/game/gamemodes/wizard/rightandwrong.dm
+++ b/code/game/gamemodes/wizard/rightandwrong.dm
@@ -139,7 +139,6 @@
new /obj/item/gun/magic/staff/door(get_turf(H))
if("armor")
new /obj/item/clothing/suit/space/hardsuit/wizard(get_turf(H))
- new /obj/item/clothing/head/helmet/space/hardsuit/wizard(get_turf(H))
if("scrying")
new /obj/item/scrying(get_turf(H))
if(!(XRAY in H.mutations))
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index a97db45ca31..b5f468ad319 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -383,7 +383,6 @@
if(.)
new /obj/item/clothing/shoes/magboots/wizard(get_turf(user))
new /obj/item/clothing/gloves/color/purple(get_turf(user))//To complete the outfit
- new /obj/item/clothing/head/helmet/space/hardsuit/wizard(get_turf(user))
/datum/spellbook_entry/item/contract
name = "Contract of Apprenticeship"
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 3776e18e450..671a7d1caff 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -62,8 +62,7 @@
/obj/machinery/suit_storage_unit/engine
name = "engineering suit storage unit"
- suit_type = /obj/item/clothing/suit/space/hardsuit/engineering
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/engineering
+ suit_type = /obj/item/clothing/suit/space/hardsuit/engine
mask_type = /obj/item/clothing/mask/breath
magboots_type = /obj/item/clothing/shoes/magboots
req_access = list(access_engine_equip)
@@ -73,8 +72,7 @@
/obj/machinery/suit_storage_unit/ce
name = "chief engineer's suit storage unit"
- suit_type = /obj/item/clothing/suit/space/hardsuit/elite
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/elite
+ suit_type = /obj/item/clothing/suit/space/hardsuit/engine/elite
mask_type = /obj/item/clothing/mask/gas
magboots_type = /obj/item/clothing/shoes/magboots/advance
req_access = list(access_ce)
@@ -85,7 +83,6 @@
/obj/machinery/suit_storage_unit/security
name = "security suit storage unit"
suit_type = /obj/item/clothing/suit/space/hardsuit/security
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/security
mask_type = /obj/item/clothing/mask/gas/sechailer
magboots_type = /obj/item/clothing/shoes/magboots
req_access = list(access_security)
@@ -98,8 +95,7 @@
/obj/machinery/suit_storage_unit/atmos
name = "atmospherics suit storage unit"
- suit_type = /obj/item/clothing/suit/space/hardsuit/atmos
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/atmos
+ suit_type = /obj/item/clothing/suit/space/hardsuit/engine/atmos
mask_type = /obj/item/clothing/mask/gas
magboots_type = /obj/item/clothing/shoes/magboots
req_access = list(access_atmospherics)
@@ -110,7 +106,6 @@
/obj/machinery/suit_storage_unit/mining
name = "mining suit storage unit"
suit_type = /obj/item/clothing/suit/space/hardsuit/mining
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/mining
mask_type = /obj/item/clothing/mask/breath
req_access = list(access_mining_station)
@@ -125,7 +120,6 @@
/obj/machinery/suit_storage_unit/cmo
suit_type = /obj/item/clothing/suit/space/hardsuit/medical
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/medical
mask_type = /obj/item/clothing/mask/breath
req_access = list(access_cmo)
@@ -159,7 +153,6 @@
/obj/machinery/suit_storage_unit/syndicate
name = "syndicate suit storage unit"
suit_type = /obj/item/clothing/suit/space/hardsuit/syndi
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/syndi
mask_type = /obj/item/clothing/mask/gas/syndicate
magboots_type = /obj/item/clothing/shoes/magboots/syndie
storage_type = /obj/item/tank/jetpack/oxygen/harness
@@ -174,7 +167,6 @@
/obj/machinery/suit_storage_unit/ert/command
suit_type = /obj/item/clothing/suit/space/hardsuit/ert/commander
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/tank/emergency_oxygen/double
@@ -183,7 +175,6 @@
/obj/machinery/suit_storage_unit/ert/security
suit_type = /obj/item/clothing/suit/space/hardsuit/ert/security
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/security
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/tank/emergency_oxygen/double
@@ -192,7 +183,6 @@
/obj/machinery/suit_storage_unit/ert/engineer
suit_type = /obj/item/clothing/suit/space/hardsuit/ert/engineer
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/tank/emergency_oxygen/double
@@ -201,7 +191,6 @@
/obj/machinery/suit_storage_unit/ert/medical
suit_type = /obj/item/clothing/suit/space/hardsuit/ert/medical
- helmet_type = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical
mask_type = /obj/item/clothing/mask/breath
storage_type = /obj/item/tank/emergency_oxygen/double
@@ -699,7 +688,7 @@
else
mask.forceMove(loc)
mask = null
-
+
/obj/machinery/suit_storage_unit/proc/dispense_magboots(mob/user as mob)
if(!magboots)
return
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 3fe5c140407..6fb552654d9 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -1096,15 +1096,6 @@
new /obj/item/stock_parts/micro_laser/quadultra(src)
new /obj/item/stock_parts/matter_bin/bluespace(src)
-/obj/item/storage/box/mininghardsuit
- name = "Boxed Mining Hardsuit"
- desc = "Contains a mining hardsuit and helmet. For mining."
-
-/obj/item/storage/box/mininghardsuit/New()
- ..()
- new /obj/item/clothing/suit/space/hardsuit/mining(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/mining(src)
-
/obj/item/storage/box/hug
name = "box of hugs"
desc = "A special box for sensitive people."
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 3736d93f3f6..a8f0af13b98 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -136,36 +136,14 @@
/obj/item/storage/box/syndie_kit/hardsuit
name = "Boxed Blood Red Suit and Helmet"
- can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/clothing/head/helmet/space/hardsuit/syndi, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
+ can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi, /obj/item/tank/emergency_oxygen/syndi, /obj/item/clothing/mask/gas/syndicate)
max_w_class = WEIGHT_CLASS_NORMAL
/obj/item/storage/box/syndie_kit/hardsuit/New()
..()
new /obj/item/clothing/suit/space/hardsuit/syndi(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/syndi(src)
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/tank/emergency_oxygen/syndi(src)
- return
-
-/obj/item/storage/box/syndie_kit/elite_hardsuit
- name = "Boxed Elite Syndicate Hardsuit and Helmet"
- can_hold = list(/obj/item/clothing/suit/space/hardsuit/syndi/elite, /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite)
- max_w_class = WEIGHT_CLASS_NORMAL
-
-/obj/item/storage/box/syndie_kit/elite_hardsuit/New()
- ..()
- new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite(src)
-
-/obj/item/storage/box/syndie_kit/shielded_hardsuit
- name = "Boxed Shielded Syndicate Hardsuit and Helmet"
- can_hold = list(/obj/item/clothing/suit/space/hardsuit/shielded/syndi, /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi)
- max_w_class = WEIGHT_CLASS_BULKY
-
-/obj/item/storage/box/syndie_kit/shielded_hardsuit/New()
- ..()
- new /obj/item/clothing/suit/space/hardsuit/shielded/syndi(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi(src)
/obj/item/storage/box/syndie_kit/conversion
name = "box (CK)"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
index 37669a47938..a1e4cd03239 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/miscjobs.dm
@@ -54,7 +54,7 @@
/obj/structure/closet/secure_closet/syndicate_officer/New()
..()
- new /obj/item/storage/box/syndie_kit/elite_hardsuit(src)
+ new /obj/item/clothing/suit/space/hardsuit/syndi/elite(src)
new /obj/item/gun/projectile/automatic/sniper_rifle/syndicate(src)
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src)
new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index 493554ea25d..3c3ea235b58 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -23,7 +23,6 @@
/obj/structure/closet/syndicate/suits/New()
..()
- new /obj/item/clothing/head/helmet/space/hardsuit/syndi(src)
new /obj/item/clothing/mask/gas/syndicate(src)
new /obj/item/clothing/suit/space/hardsuit/syndi(src)
new /obj/item/tank/jetpack/oxygen/harness(src)
@@ -61,7 +60,6 @@
new /obj/item/clothing/glasses/thermal(src)
new /obj/item/clothing/shoes/magboots/syndie/advance(src)
new /obj/item/clothing/mask/gas/syndicate(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/sst(src)
new /obj/item/clothing/suit/space/hardsuit/syndi/elite/sst(src)
/obj/structure/closet/syndicate/resources/
diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm
index 7e77fe17df7..611dbcfd97a 100644
--- a/code/modules/admin/verbs/striketeam_syndicate.dm
+++ b/code/modules/admin/verbs/striketeam_syndicate.dm
@@ -147,7 +147,6 @@ var/global/sent_syndicate_strike_team = 0
equip_to_slot_or_del(new /obj/item/melee/energy/sword/saber/red(src), slot_l_store)
if(full_gear)
- equip_to_slot_or_del(new /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/sst(src), slot_head)
equip_to_slot_or_del(new /obj/item/clothing/mask/gas/syndicate(src), slot_wear_mask)
equip_to_slot_or_del(new /obj/item/clothing/suit/space/hardsuit/syndi/elite/sst(src), slot_wear_suit)
equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal(src), slot_glasses)
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index 92a6a2b1d86..ce2afbd13c4 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -341,9 +341,8 @@
uniform = /obj/item/clothing/under/rank/engineer
belt = /obj/item/storage/belt/utility/full
- suit = /obj/item/clothing/suit/space/hardsuit
+ suit = /obj/item/clothing/suit/space/hardsuit/engine
shoes = /obj/item/clothing/shoes/workboots
- head = /obj/item/clothing/head/helmet/space/hardsuit
mask = /obj/item/clothing/mask/breath
id = /obj/item/card/id/engineering
l_pocket = /obj/item/t_scanner
@@ -423,7 +422,6 @@
/datum/outfit/job/mining/suit
name = "Shaft Miner"
suit = /obj/item/clothing/suit/space/hardsuit/mining
- head = /obj/item/clothing/head/helmet/space/hardsuit/mining
uniform = /obj/item/clothing/under/rank/miner
gloves = /obj/item/clothing/gloves/fingerless
shoes = /obj/item/clothing/shoes/workboots
diff --git a/code/modules/awaymissions/mission_code/ruins/oldstation.dm b/code/modules/awaymissions/mission_code/ruins/oldstation.dm
index 7150d0c74c4..a92b88485b9 100644
--- a/code/modules/awaymissions/mission_code/ruins/oldstation.dm
+++ b/code/modules/awaymissions/mission_code/ruins/oldstation.dm
@@ -170,6 +170,7 @@
armor = list("melee" = 30, "bullet" = 5, "laser" = 5, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75)
slowdown = 3
resistance_flags = FIRE_PROOF
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ancient
var/footstep = 1
/obj/item/clothing/suit/space/hardsuit/ancient/on_mob_move()
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 854450f79cc..19ce8a87516 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -2,7 +2,6 @@
name = "clothing"
burn_state = FLAMMABLE
var/list/species_restricted = null //Only these species can wear this kit.
- var/hardsuit_restrict_helmet = 0 // Stops the user from equipping a hardsuit helmet without attaching it to the suit first.
var/scan_reagents = 0 //Can the wearer see reagents while it's equipped?
/*
@@ -473,6 +472,7 @@ BLIND // can't see anything
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
slot_flags = SLOT_OCLOTHING
var/blood_overlay_type = "suit"
+ var/suittoggled = FALSE
var/suit_adjusted = 0
var/ignore_suitadjust = 1
var/adjust_flavour = null
diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm
index 099b46a10b9..831eb59dfd1 100644
--- a/code/modules/clothing/spacesuits/ert.dm
+++ b/code/modules/clothing/spacesuits/ert.dm
@@ -5,7 +5,6 @@
icon_state = "hardsuit0-ert_commander"
item_state = "helm-command"
armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 50)
- hardsuit_restrict_helmet = 0 // ERT helmets can be taken on and off at will.
var/obj/machinery/camera/camera
var/has_camera = TRUE
strip_delay = 130
@@ -41,6 +40,7 @@
/obj/item/screwdriver, /obj/item/weldingtool, /obj/item/wirecutters, /obj/item/wrench, /obj/item/multitool, \
/obj/item/radio, /obj/item/analyzer, /obj/item/gun/energy/laser, /obj/item/gun/energy/pulse, \
/obj/item/gun/energy/gun/advtaser, /obj/item/melee/baton, /obj/item/gun/energy/gun, /obj/item/gun/projectile/automatic/lasercarbine, /obj/item/gun/energy/gun/blueshield, /obj/item/gun/energy/immolator/multi)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert
strip_delay = 130
sprite_sheets = list(
@@ -67,11 +67,13 @@
desc = "A suit worn by the commander of a Nanotrasen Emergency Response Team. Has blue highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_commander"
item_state = "suit-command"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander
/obj/item/clothing/suit/space/hardsuit/ert/commander/gamma
name = "elite emergency response team commander suit"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "ert_gcommander"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/commander/gamma
//Security
/obj/item/clothing/head/helmet/space/hardsuit/ert/security
@@ -92,11 +94,13 @@
desc = "A suit worn by security members of a Nanotrasen Emergency Response Team. Has red highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_security"
item_state = "syndicate-black-red"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/security
/obj/item/clothing/suit/space/hardsuit/ert/security/gamma
name = "elite emergency response team security suit"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "ert_gsecurity"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/security/gamma
//Engineer
/obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
@@ -118,11 +122,13 @@
desc = "A suit worn by the engineers of a Nanotrasen Emergency Response Team. Has yellow highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_engineer"
item_state = "suit-orange"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer
/obj/item/clothing/suit/space/hardsuit/ert/engineer/gamma
name = "elite emergency response team engineer suit"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "ert_gengineer"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer/gamma
//Medical
/obj/item/clothing/head/helmet/space/hardsuit/ert/medical
@@ -141,11 +147,13 @@
name = "emergency response team medical suit"
desc = "A suit worn by medical members of a Nanotrasen Emergency Response Team. Has white highlights. Armoured and space ready."
icon_state = "ert_medical"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical
/obj/item/clothing/suit/space/hardsuit/ert/medical/gamma
name = "elite emergency response team medical suit"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "ert_gmedical"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/medical/gamma
//Janitor
/obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
@@ -159,15 +167,18 @@
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "hardsuit0-gammajanitor"
item_color = "gammajanitor"
+
/obj/item/clothing/suit/space/hardsuit/ert/janitor
name = "emergency response team janitor suit"
desc = "A suit worn by the janitorial of a Nanotrasen Emergency Response Team. Has purple highlights. Armoured, space ready, and fire resistant."
icon_state = "ert_janitor"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
/obj/item/clothing/suit/space/hardsuit/ert/janitor/gamma
name = "elite emergency response team janitor suit"
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
icon_state = "ert_gjanitor"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor/gamma
//Paranormal
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
@@ -187,6 +198,7 @@
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
sprite_sheets = null
actions_types = list()
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/New()
..()
@@ -200,6 +212,7 @@
/obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
name = "inquisitor's hardsuit"
icon_state = "hardsuit-inquisitor"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
/obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
name = "champion's helmet"
@@ -211,3 +224,4 @@
name = "champion's hardsuit"
desc = "Voices echo from the hardsuit, driving the user insane."
icon_state = "hardsuit-berserker"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index ead2c04016d..4f3f1ef353c 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -4,11 +4,12 @@
desc = "A special helmet designed for work in a hazardous, low-pressure environment."
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
- hardsuit_restrict_helmet = 1
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
+ var/basestate = "hardsuit"
allowed = list(/obj/item/flashlight)
var/brightness_on = 4 //luminosity when on
- var/on = 0
+ var/on = FALSE
+ var/obj/item/clothing/suit/space/hardsuit/suit
item_color = "engineering" //Determines used sprites: hardsuit[on]-[color] and hardsuit[on]-[color]2 (lying down sprite)
actions_types = list(/datum/action/item_action/toggle_helmet_light)
@@ -31,28 +32,21 @@
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/hats.dmi'
)
-/obj/item/clothing/head/helmet/space/hardsuit/equip_to_best_slot(mob/M)
- if(hardsuit_restrict_helmet)
- to_chat(M, "You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)") // Stop hardsuit helmet equipping
- return 0
- ..()
-
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
toggle_light(user)
/obj/item/clothing/head/helmet/space/hardsuit/proc/toggle_light(mob/user)
on = !on
- icon_state = "hardsuit[on]-[item_color]"
-
- if(on)
- set_light(brightness_on)
- else
- set_light(0)
+ icon_state = "[basestate][on]-[item_color]"
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_head()
+ if(on)
+ set_light(brightness_on)
+ else
+ set_light(0)
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
@@ -62,10 +56,32 @@
toggle_light()
visible_message("[src]'s light fades and turns off.")
+/obj/item/clothing/head/helmet/space/hardsuit/dropped(mob/user)
+ ..()
+ if(suit)
+ suit.RemoveHelmet()
+
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
if(slot == slot_head)
return 1
+/obj/item/clothing/head/helmet/space/hardsuit/equipped(mob/user, slot)
+ ..()
+ if(slot != slot_head)
+ if(suit)
+ suit.RemoveHelmet()
+ else
+ qdel(src)
+
+/obj/item/clothing/head/helmet/space/hardsuit/proc/display_visor_message(var/msg)
+ var/mob/wearer = loc
+ if(msg && ishuman(wearer))
+ wearer.show_message("[msg]", 1)
+
+/obj/item/clothing/head/helmet/space/hardsuit/emp_act(severity)
+ ..()
+ display_visor_message("[severity > 1 ? "Light" : "Strong"] electromagnetic pulse detected!")
+
/obj/item/clothing/suit/space/hardsuit
name = "hardsuit"
desc = "A special space suit for environments that might pose hazards beyond just the vacuum of space. Provides more protection than a standard space suit."
@@ -74,7 +90,10 @@
armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd, /obj/item/rpd)
siemens_coefficient = 0
+ var/obj/item/clothing/head/helmet/space/hardsuit/helmet
actions_types = list(/datum/action/item_action/toggle_helmet)
+ var/helmettype = /obj/item/clothing/head/helmet/space/hardsuit
+
hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran")
species_restricted = list("exclude","Diona","Wryn")
@@ -94,206 +113,64 @@
"Vulpkanin" = 'icons/obj/clothing/species/vulpkanin/suits.dmi'
)
- //Breach thresholds, should ideally be inherited by most (if not all) hardsuits.
- breach_threshold = 18
- can_breach = 0
-
- //Component/device holders.
- var/obj/item/stock_parts/gloves = null // Basic capacitor allows insulation, upgrades allow shock gloves etc.
-
- var/attached_boots = 1 // Can't wear boots if some are attached
- var/obj/item/clothing/shoes/magboots/boots = null // Deployable boots, if any.
- var/attached_helmet = 1 // Can't wear a helmet if one is deployable.
- var/obj/item/clothing/head/helmet/helmet = null // Deployable helmet, if any.
-
- var/list/max_mounted_devices = 0 // Maximum devices. Easy.
- var/list/can_mount = null // Types of device that can be hardpoint mounted.
- var/list/mounted_devices = null // Holder for the above device.
- var/obj/item/active_device = null // Currently deployed device, if any.
-
-/obj/item/clothing/suit/space/hardsuit/equipped(mob/M)
+/obj/item/clothing/suit/space/hardsuit/attack_self(mob/user)
+ user.changeNext_move(CLICK_CD_MELEE)
..()
- var/mob/living/carbon/human/H = M
-
- if(!istype(H)) return
-
- spawn(1) //to ensure the slot is set before we continue
- if(H.wear_suit != src)
- return
-
- if(attached_helmet && helmet)
- if(H.head)
- to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.")
- else
- to_chat(M, "Your suit's helmet deploys with a hiss.")
- //TODO: Species check, skull damage for forcing an unfitting helmet on?
- helmet.forceMove(H)
- H.equip_to_slot(helmet, slot_head)
- helmet.flags |= NODROP
-
- if(attached_boots && boots)
- if(H.shoes)
- to_chat(M, "You are unable to deploy your suit's magboots as \the [H.shoes] are in the way.")
- else
- to_chat(M, "Your suit's boots deploy with a hiss.")
- boots.forceMove(H)
- H.equip_to_slot(boots, slot_shoes)
- boots.flags |= NODROP
-
-/obj/item/clothing/suit/space/hardsuit/dropped()
- ..()
-
- var/mob/living/carbon/human/H
-
- if(helmet)
- H = helmet.loc
- if(istype(H))
- if(helmet && H.head == helmet)
- helmet.flags &= ~NODROP
- H.unEquip(helmet)
- helmet.forceMove(src)
-
- if(boots)
- H = boots.loc
- if(istype(H))
- if(boots && H.shoes == boots)
- boots.flags &= ~NODROP
- H.unEquip(boots)
- boots.forceMove(src)
-
-/obj/item/clothing/suit/space/hardsuit/ui_action_click()
- ..()
- toggle_helmet()
-
-/obj/item/clothing/suit/space/hardsuit/verb/toggle_helmet()
- set name = "Toggle Helmet"
- set category = "Object"
- set src in usr
-
- if(!isliving(usr))
- return
-
- if(!helmet)
- to_chat(usr, "There is no helmet installed.")
- return
-
- var/mob/living/carbon/human/H = usr
-
- if(!istype(H)) return
- if(H.stat) return
- if(H.wear_suit != src) return
-
- if(H.head == helmet)
- helmet.flags &= ~NODROP
- H.unEquip(helmet)
- helmet.loc = src
- to_chat(H, "You retract your hardsuit helmet.")
- else
- if(H.head)
- to_chat(H, "You cannot deploy your helmet while wearing another helmet.")
- return
- //TODO: Species check, skull damage for forcing an unfitting helmet on?
- helmet.loc = H
- helmet.pickup(H)
- H.equip_to_slot(helmet, slot_head)
- helmet.flags |= NODROP
- to_chat(H, "You deploy your hardsuit helmet, sealing you off from the world.")
- H.update_inv_head()
-
-/obj/item/clothing/suit/space/hardsuit/attackby(obj/item/W, mob/user, params)
- if(!isliving(user))
- return
-
- if(istype(W,/obj/item/screwdriver) && can_modify(user))
- if(!helmet)
- to_chat(user, "\The [src] does not have a helmet installed.")
- else
- to_chat(user, "You detach \the [helmet] from \the [src]'s helmet mount.")
- helmet.loc = get_turf(src)
- if(istype(helmet,/obj/item/clothing/head/helmet/space/hardsuit/syndi))
- var/obj/item/clothing/head/helmet/space/hardsuit/syndi/S = helmet
- S.linkedsuit = null
- src.helmet = null
- return
- if(!boots)
- to_chat(user, "\The [src] does not have any boots installed.")
- else
- to_chat(user, "You detach \the [boots] from \the [src]'s boot mounts.")
- boots.loc = get_turf(src)
- boots = null
- return
-
- else if(istype(W,/obj/item/clothing/head/helmet/space) && can_modify(user))
- if(!attached_helmet)
- to_chat(user, "\The [src] does not have a helmet mount.")
- return
- if(helmet)
- to_chat(user, "\The [src] already has a helmet installed.")
- else
- to_chat(user, "You attach \the [W] to \the [src]'s helmet mount.")
- user.drop_item()
- W.loc = src
- helmet = W
- if(istype(helmet,/obj/item/clothing/head/helmet/space/hardsuit/syndi))
- var/obj/item/clothing/head/helmet/space/hardsuit/syndi/S = W
- S.forceMove(src)
- helmet = S
- S.link_suit()
- return
-
- else if(istype(W,/obj/item/clothing/shoes/magboots) && can_modify(user))
- if(!attached_boots)
- to_chat(user, "\The [src] does not have boot mounts.")
- return
-
- if(boots)
- to_chat(user, "\The [src] already has magboots installed.")
- else
- to_chat(user, "You attach \the [W] to \the [src]'s boot mounts.")
- user.drop_item()
- W.loc = src
- boots = W
- else
- return ..()
-
- ..()
-
-/obj/item/clothing/suit/space/hardsuit/proc/can_modify(mob/living/user)
- if(isliving(loc))
- to_chat(user, "You can not modify the hardsuit while it is being worn.")
- return 0
-
- return 1
+/obj/item/clothing/suit/space/hardsuit/item_action_slot_check(slot)
+ if(slot == slot_wear_suit) //we only give the mob the ability to toggle the helmet if he's wearing the hardsuit.
+ return 1
//Engineering hardsuit
-/obj/item/clothing/head/helmet/space/hardsuit/engineering
+/obj/item/clothing/head/helmet/space/hardsuit/engine
name = "engineering hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "hardsuit0-engineering"
item_state = "eng_helm"
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
+ item_color = "engineering"
-/obj/item/clothing/suit/space/hardsuit/engineering
+/obj/item/clothing/suit/space/hardsuit/engine
name = "engineering hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "hardsuit-engineering"
item_state = "eng_hardsuit"
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/t_scanner, /obj/item/rcd)
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 75)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine
+
+//Atmospherics
+/obj/item/clothing/head/helmet/space/hardsuit/engine/atmos
+ name = "atmospherics hardsuit helmet"
+ desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has thermal shielding."
+ icon_state = "hardsuit0-atmos"
+ item_state = "atmo_helm"
+ item_color = "atmospherics"
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 25)
+ heat_protection = HEAD //Uncomment to enable firesuit protection
+ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+
+/obj/item/clothing/suit/space/hardsuit/engine/atmos
+ name = "atmospherics hardsuit"
+ desc = "A special suit that protects against hazardous, low pressure environments. Has thermal shielding."
+ icon_state = "hardsuit-atmos"
+ item_state = "atmo_hardsuit"
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 25)
+ heat_protection = UPPER_TORSO|LOWER_TORSO|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/engine/atmos
//Chief Engineer's hardsuit
-/obj/item/clothing/head/helmet/space/hardsuit/elite
+/obj/item/clothing/head/helmet/space/hardsuit/engine/elite
name = "advanced hardsuit helmet"
desc = "An advanced helmet designed for work in a hazardous, low pressure environment. Shines with a high polish."
icon_state = "hardsuit0-white"
item_state = "ce_helm"
item_color = "white"
- armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90)
+ armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 100)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
-/obj/item/clothing/suit/space/hardsuit/elite
+/obj/item/clothing/suit/space/hardsuit/engine/elite
icon_state = "hardsuit-white"
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
@@ -301,6 +178,7 @@
armor = list(melee = 40, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 90)
heat_protection = UPPER_TORSO|LOWER_TORSO|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/engine/elite
//Mining hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/mining
@@ -309,16 +187,21 @@
icon_state = "hardsuit0-mining"
item_state = "mining_helm"
item_color = "mining"
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
+ heat_protection = HEAD
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
+ brightness_on = 7
/obj/item/clothing/suit/space/hardsuit/mining
icon_state = "hardsuit-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
+ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
- allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/bag/ore,/obj/item/pickaxe)
-
+ allowed = list(/obj/item/flashlight, /obj/item/tank, /obj/item/storage/bag/ore, /obj/item/pickaxe, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining
+ heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
//Syndicate hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/syndi
@@ -332,48 +215,47 @@
on = 1
var/obj/item/clothing/suit/space/hardsuit/syndi/linkedsuit = null
actions_types = list(/datum/action/item_action/toggle_helmet_mode)
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL
visor_flags_inv = HIDEMASK|HIDEEYES|HIDEFACE|HIDETAIL
+ visor_flags = STOPSPRESSUREDMAGE
/obj/item/clothing/head/helmet/space/hardsuit/syndi/update_icon()
icon_state = "hardsuit[on]-[item_color]"
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/link_suit()
- . = ..()
- if(istype(loc,/obj/item/clothing/suit/space/hardsuit/syndi))
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/New()
+ ..()
+ if(istype(loc, /obj/item/clothing/suit/space/hardsuit/syndi))
linkedsuit = loc
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
-
- if(!linkedsuit)
- to_chat(user, "You must attach the helmet to a syndicate hardsuit to toggle combat mode!")
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) //Toggle Helmet
+ if(!isturf(user.loc))
+ to_chat(user, "You cannot toggle your helmet while in this [user.loc]!" )
return
-
on = !on
- if(on)
- to_chat(user, "You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed.")
+ if(on || force)
+ to_chat(user, "You switch your hardsuit to EVA mode, sacrificing speed for space protection.")
name = initial(name)
desc = initial(desc)
set_light(brightness_on)
- flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
+ flags |= visor_flags
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv |= visor_flags_inv
cold_protection |= HEAD
else
- to_chat(user, "You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.")
- name = "blood-red hardsuit helmet (combat)"
+ to_chat(user, "You switch your hardsuit to combat mode and can now run at full speed.")
+ name += " (combat)"
desc = alt_desc
set_light(0)
- flags = BLOCKHAIR | THICKMATERIAL | NODROP
+ flags &= ~visor_flags
flags_cover &= ~(HEADCOVERSEYES | HEADCOVERSMOUTH)
flags_inv &= ~visor_flags_inv
cold_protection &= ~HEAD
-
update_icon()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
toggle_hardsuit_mode(user)
user.update_inv_head()
-
+ if(iscarbon(user))
+ var/mob/living/carbon/C = user
+ C.head_update(src, forced = 1)
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
@@ -384,34 +266,20 @@
linkedsuit.name = initial(linkedsuit.name)
linkedsuit.desc = initial(linkedsuit.desc)
linkedsuit.slowdown = 1
- linkedsuit.flags |= STOPSPRESSUREDMAGE | THICKMATERIAL
- linkedsuit.flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
+ linkedsuit.flags |= STOPSPRESSUREDMAGE
linkedsuit.cold_protection |= UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
else
linkedsuit.name += " (combat)"
linkedsuit.desc = linkedsuit.alt_desc
linkedsuit.slowdown = 0
- linkedsuit.flags = THICKMATERIAL
+ linkedsuit.flags &= ~STOPSPRESSUREDMAGE
linkedsuit.cold_protection &= ~(UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS)
- linkedsuit.flags_inv &= ~(HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL)
+ linkedsuit.icon_state = "hardsuit[on]-[item_color]"
linkedsuit.update_icon()
user.update_inv_wear_suit()
user.update_inv_w_uniform()
- for(var/X in actions)
- var/datum/action/A = X
- A.UpdateButtonIcon()
-
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
- name = "eagle helmet"
- desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
- icon_state = "griffinhat"
- item_state = "griffinhat"
-
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom/update_icon()
- return
-
/obj/item/clothing/suit/space/hardsuit/syndi
name = "blood-red hardsuit"
desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
@@ -423,10 +291,8 @@
var/on = 1
actions_types = list(/datum/action/item_action/toggle_hardsuit_mode)
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
- 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)
-
-/obj/item/clothing/suit/space/hardsuit/syndi/update_icon()
- icon_state = "hardsuit[on]-[item_color]"
+ allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword, /obj/item/restraints/handcuffs, /obj/item/tank)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi
//Elite Syndie suit
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
@@ -437,36 +303,21 @@
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = HEAD
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ unacidable = TRUE
sprite_sheets = null
-/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/attack_self(mob/user)
- ..()
- if(on)
- name = "elite syndicate hardsuit helmet"
- desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
- else
- name = "elite syndicate hardsuit helmet (combat)"
- desc = "An elite version of the syndicate helmet, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
-
/obj/item/clothing/suit/space/hardsuit/syndi/elite
name = "elite syndicate hardsuit"
desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode."
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
armor = list(melee = 60, bullet = 60, laser = 50, energy = 25, bomb = 55, bio = 100, rad = 70)
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+ unacidable = TRUE
sprite_sheets = null
-/obj/item/clothing/suit/space/hardsuit/syndi/elite/attack_self(mob/user)
- ..()
- if(on)
- name = "elite syndicate hardsuit"
- desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in travel mode. Property of Gorlex Marauders."
- else
- name = "elite syndicate hardsuit (combat)"
- desc = "An elite version of the syndicate hardsuit, with improved armour and fire shielding. It is in combat mode. Property of Gorlex Marauders."
-
//Strike team hardsuits
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/sst
armor = list(melee = 70, bullet = 70, laser = 50, energy = 40, bomb = 80, bio = 100, rad = 100) //Almost as good as DS gear, but unlike DS can switch to combat for mobility
@@ -477,16 +328,27 @@
armor = list(melee = 70, bullet = 70, laser = 50, energy = 40, bomb = 80, bio = 100, rad = 100)
icon_state = "hardsuit0-sst"
item_color = "sst"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/elite/sst
/obj/item/clothing/suit/space/hardsuit/syndi/freedom
name = "eagle suit"
desc = "An advanced, light suit, fabricated from a mixture of synthetic feathers and space-resistant material. A gun holster appears to be integrated into the suit."
icon_state = "freedom"
item_state = "freedom"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
/obj/item/clothing/suit/space/hardsuit/syndi/freedom/update_icon()
return
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom
+ name = "eagle helmet"
+ desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
+ icon_state = "griffinhat"
+ item_state = "griffinhat"
+
+/obj/item/clothing/head/helmet/space/hardsuit/syndi/freedom/update_icon()
+ return
+
//Wizard hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/wizard
name = "gem-encrusted hardsuit helmet"
@@ -515,6 +377,7 @@
allowed = list(/obj/item/teleportation_scroll,/obj/item/tank)
heat_protection = UPPER_TORSO|LOWER_TORSO|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
sprite_sheets = null
magical = TRUE
@@ -525,9 +388,9 @@
icon_state = "hardsuit0-medical"
item_state = "medical_helm"
item_color = "medical"
- flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
flash_protect = 0
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
+ flags = STOPSPRESSUREDMAGE | THICKMATERIAL
scan_reagents = 1 //Generally worn by the CMO, so they'd get utility off of seeing reagents
/obj/item/clothing/suit/space/hardsuit/medical
@@ -536,7 +399,9 @@
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort."
item_state = "medical_hardsuit"
allowed = list(/obj/item/flashlight,/obj/item/tank,/obj/item/storage/firstaid,/obj/item/healthanalyzer,/obj/item/stack/medical,/obj/item/rad_laser)
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
+ armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 50)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical
+ slowdown = 0.5
//Security
/obj/item/clothing/head/helmet/space/hardsuit/security
@@ -545,36 +410,31 @@
icon_state = "hardsuit0-sec"
item_state = "sec_helm"
item_color = "sec"
- armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
+ armor = list(melee = 35, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
/obj/item/clothing/suit/space/hardsuit/security
icon_state = "hardsuit-sec"
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 = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
+ armor = list(melee = 35, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
allowed = list(/obj/item/gun,/obj/item/flashlight,/obj/item/tank,/obj/item/melee/baton,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/restraints/handcuffs)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
+/obj/item/clothing/head/helmet/space/hardsuit/security/hos
+ name = "head of security's 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"
+ item_color = "hos"
+ armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50)
-//Atmospherics hardsuit (BS12)
-/obj/item/clothing/head/helmet/space/hardsuit/atmos
- desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
- name = "atmospherics hardsuit helmet"
- icon_state = "hardsuit0-atmos"
- item_state = "atmos_helm"
- item_color = "atmos"
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
- heat_protection = HEAD //Uncomment to enable firesuit protection
- max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
-
-/obj/item/clothing/suit/space/hardsuit/atmos
- desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
- icon_state = "hardsuit-atmos"
- name = "atmos hardsuit"
- item_state = "atmos_hardsuit"
- armor = list(melee = 10, bullet = 5, laser = 10, energy = 5, bomb = 10, bio = 100, rad = 0)
- heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS //Uncomment to enable firesuit protection
- max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
+/obj/item/clothing/suit/space/hardsuit/security/hos
+ icon_state = "hardsuit-hos"
+ name = "head of security's 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 = 10, bomb = 25, bio = 100, rad = 50)
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
+ sprite_sheets = null
//Singuloth armor
/obj/item/clothing/head/helmet/space/hardsuit/singuloth
@@ -591,23 +451,7 @@
desc = "This is a ceremonial armor from the chapter of the Singuloth Knights. It's made of pure forged adamantium."
item_state = "singuloth_hardsuit"
flags = STOPSPRESSUREDMAGE
- armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
-
-
-/obj/item/clothing/head/helmet/space/hardsuit/security/hos
- name = "head of security's 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"
- item_color = "hos"
- armor = list(melee = 45, bullet = 25, laser = 30,energy = 10, bomb = 25, bio = 100, rad = 50)
-
-
-/obj/item/clothing/suit/space/hardsuit/security/hos
- icon_state = "hardsuit-hos"
- name = "head of security's 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 = 10, bomb = 25, bio = 100, rad = 50)
- sprite_sheets = null
+ armor = list(melee = 45, bullet = 25, laser = 30, energy = 10, bomb = 25, bio = 100, rad = 100)
/////////////SHIELDED//////////////////////////////////
@@ -616,6 +460,7 @@
name = "shielded hardsuit"
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
icon_state = "hardsuit-hos"
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos
allowed = list(/obj/item/flashlight,/obj/item/tank, /obj/item/gun,/obj/item/reagent_containers/spray/pepper,/obj/item/ammo_box,/obj/item/ammo_casing,/obj/item/melee/baton,/obj/item/restraints/handcuffs)
armor = list(melee = 30, bullet = 15, laser = 30, energy = 10, bomb = 10, bio = 100, rad = 50)
var/current_charges = 3
@@ -669,6 +514,7 @@
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
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)
slowdown = 0
+ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm
new file mode 100644
index 00000000000..c918eac013d
--- /dev/null
+++ b/code/modules/clothing/suits/toggles.dm
@@ -0,0 +1,76 @@
+//Hardsuit toggle code
+/obj/item/clothing/suit/space/hardsuit/New()
+ MakeHelmet()
+ ..()
+
+/obj/item/clothing/suit/space/hardsuit/Destroy()
+ if(helmet)
+ helmet.suit = null
+ qdel(helmet)
+ return ..()
+
+/obj/item/clothing/head/helmet/space/hardsuit/Destroy()
+ if(suit)
+ suit.helmet = null
+ return ..()
+
+/obj/item/clothing/suit/space/hardsuit/proc/MakeHelmet()
+ if(!helmettype)
+ return
+ if(!helmet)
+ var/obj/item/clothing/head/helmet/space/hardsuit/W = new helmettype(src)
+ W.suit = src
+ helmet = W
+
+/obj/item/clothing/suit/space/hardsuit/ui_action_click()
+ ..()
+ ToggleHelmet()
+
+/obj/item/clothing/suit/space/hardsuit/equipped(mob/user, slot)
+ if(!helmettype)
+ return
+ if(slot != slot_wear_suit)
+ RemoveHelmet()
+ ..()
+
+/obj/item/clothing/suit/space/hardsuit/proc/RemoveHelmet()
+ if(!helmet)
+ return
+ suittoggled = FALSE
+ if(ishuman(helmet.loc))
+ var/mob/living/carbon/H = helmet.loc
+ if(helmet.on)
+ helmet.attack_self(H)
+ H.unEquip(helmet, TRUE)
+ helmet.forceMove(src)
+ H.update_inv_wear_suit()
+ to_chat(H, "The helmet on the hardsuit disengages.")
+ playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
+ else
+ helmet.forceMove(src)
+
+/obj/item/clothing/suit/space/hardsuit/dropped()
+ ..()
+ RemoveHelmet()
+
+/obj/item/clothing/suit/space/hardsuit/proc/ToggleHelmet()
+ var/mob/living/carbon/human/H = src.loc
+ if(!helmettype)
+ return
+ if(!helmet)
+ return
+ if(!suittoggled)
+ if(ishuman(src.loc))
+ if(H.wear_suit != src)
+ to_chat(H, "You must be wearing [src] to engage the helmet!")
+ return
+ if(H.head)
+ to_chat(H, "You're already wearing something on your head!")
+ return
+ else if(H.equip_to_slot_if_possible(helmet, SLOT_HEAD, 0 ,0, 1))
+ to_chat(H, "You engage the helmet on the hardsuit.")
+ suittoggled = TRUE
+ H.update_inv_wear_suit()
+ playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
+ else
+ RemoveHelmet()
\ No newline at end of file
diff --git a/code/modules/mining/equipment_locker.dm b/code/modules/mining/equipment_locker.dm
index ef7a74f5d60..89ad0fc4a8b 100644
--- a/code/modules/mining/equipment_locker.dm
+++ b/code/modules/mining/equipment_locker.dm
@@ -430,7 +430,7 @@
new /datum/data/mining_equipment("Silver Pickaxe", /obj/item/pickaxe/silver, 1000),
new /datum/data/mining_equipment("Mining Conscription Kit", /obj/item/storage/backpack/duffel/mining_conscript, 1500),
new /datum/data/mining_equipment("Jetpack", /obj/item/tank/jetpack/carbondioxide/mining, 2000),
- new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/storage/box/mininghardsuit, 2000),
+ new /datum/data/mining_equipment("Mining Hardsuit", /obj/item/clothing/head/helmet/space/hardsuit/mining, 2000),
new /datum/data/mining_equipment("Diamond Pickaxe", /obj/item/pickaxe/diamond, 2000),
new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500),
new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500),
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index ab9b7979d03..a2ee237c659 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -46,7 +46,6 @@
if(10)
new /obj/item/ship_in_a_bottle(src)
if(11)
- new /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/berserker(src)
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/berserker(src)
if(12)
new /obj/item/sord(src)
@@ -75,7 +74,6 @@
new /obj/item/grenade/clusterbuster/inferno(src)
if(23)
new /obj/item/reagent_containers/food/drinks/bottle/holywater/hell(src)
- new /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor(src)
new /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor(src)
if(24)
new /obj/item/spellbook/oneuse/summonitem(src)
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 90ed82ff395..d8f09f4cb78 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -165,7 +165,7 @@
/obj/item/clothing/suit/armor/vest,
/obj/item/clothing/suit/armor/vest/blueshield,
/obj/item/clothing/suit/space/deathsquad,
- /obj/item/clothing/suit/space/hardsuit/engineering,
+ /obj/item/clothing/suit/space/hardsuit/engine,
/obj/item/radio,
/obj/item/radio/off,
/obj/item/clothing/suit/cardborg,
@@ -356,7 +356,7 @@
desc = "That's not red paint. That's real corgi blood."
valid = 1
- if(/obj/item/clothing/head/helmet/space/hardsuit/engineering)
+ if(/obj/item/clothing/suit/space/hardsuit/engine)
name = "Space Explorer [real_name]"
desc = "That's one small step for a corgi. One giant yap for corgikind."
valid = 1
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 02cb948c5c9..6f72628e092 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -194,11 +194,7 @@
if(istype(W))
if(istype(W, /obj/item/clothing))
- var/obj/item/clothing/C = W
- if(C.hardsuit_restrict_helmet)
- to_chat(src, "You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)")// Stop eva helms equipping.
- else
- equip_to_slot_if_possible(C, slot)
+ equip_to_slot_if_possible(W, slot)
else
equip_to_slot_if_possible(W, slot)
else if(!restrained())
@@ -693,7 +689,7 @@ var/list/slot_equipment_priority = list( \
msg = copytext(msg, 1, MAX_MESSAGE_LEN)
msg = sanitize_simple(html_encode(msg), list("\n" = "
"))
-
+
var/combined = length(memory + msg)
if(mind && (combined < MAX_PAPER_MESSAGE_LEN))
mind.store_memory(msg)
diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm
index 93b87e7d1ec..184ce84c50e 100644
--- a/code/modules/response_team/ert_outfits.dm
+++ b/code/modules/response_team/ert_outfits.dm
@@ -34,7 +34,7 @@
name = "RT Commander"
rt_assignment = "Emergency Response Team Leader"
rt_job = "Emergency Response Team Leader"
- rt_mob_job = "ERT Commander"
+ rt_mob_job = "ERT Commander"
uniform = /obj/item/clothing/under/rank/centcom_officer
back = /obj/item/storage/backpack/ert/commander
@@ -80,7 +80,6 @@
belt = /obj/item/gun/energy/gun/blueshield/pdw9
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/commander = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/gun/energy/ionrifle/carbine = 1,
/obj/item/restraints/handcuffs = 1,
@@ -98,7 +97,6 @@
belt = /obj/item/gun/projectile/automatic/pistol/enforcer/lethal
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/commander/gamma = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/restraints/handcuffs = 1,
/obj/item/storage/lockbox/mindshield = 1,
@@ -118,7 +116,7 @@
/datum/outfit/job/centcom/response_team/security
name = "RT Security"
rt_job = "Emergency Response Team Officer"
- rt_mob_job = "ERT Security"
+ rt_mob_job = "ERT Security"
uniform = /obj/item/clothing/under/rank/security
back = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/security/response_team
@@ -161,7 +159,6 @@
)
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/security = 1,
/obj/item/clothing/mask/gas/sechailer = 1,
/obj/item/clothing/shoes/magboots = 1,
/obj/item/storage/box/handcuffs = 1,
@@ -184,7 +181,6 @@
r_hand = /obj/item/gun/energy/immolator/multi
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/security/gamma = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/storage/box/handcuffs = 1,
/obj/item/storage/box/flashbangs = 1,
@@ -206,7 +202,7 @@
/datum/outfit/job/centcom/response_team/engineer
name = "RT Engineer"
rt_job = "Emergency Response Team Engineer"
- rt_mob_job = "ERT Engineering"
+ rt_mob_job = "ERT Engineering"
back = /obj/item/storage/backpack/ert/engineer
uniform = /obj/item/clothing/under/rank/engineer
@@ -226,7 +222,6 @@
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer = 1,
/obj/item/clothing/mask/gas = 1,
/obj/item/t_scanner = 1,
/obj/item/stack/sheet/glass/fifty = 1,
@@ -250,7 +245,6 @@
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer/gamma = 1,
/obj/item/clothing/mask/gas = 1,
/obj/item/rcd/preloaded = 1,
/obj/item/rcd_ammo = 3,
@@ -270,7 +264,6 @@
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/engineer/gamma = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/rcd/combat = 1,
/obj/item/rcd_ammo/large = 3
@@ -289,7 +282,7 @@
/datum/outfit/job/centcom/response_team/medic
name = "RT Medic"
rt_job = "Emergency Response Team Medic"
- rt_mob_job = "ERT Medical"
+ rt_mob_job = "ERT Medical"
uniform = /obj/item/clothing/under/rank/medical
back = /obj/item/storage/backpack/ert/medical
pda = /obj/item/pda/heads/ert/medical
@@ -326,7 +319,7 @@
/datum/outfit/job/centcom/response_team/medic/red
name = "RT Medic (Red)"
- rt_mob_job = "ERT Medical"
+ rt_mob_job = "ERT Medical"
shoes = /obj/item/clothing/shoes/white
gloves = /obj/item/clothing/gloves/color/latex/nitrile
suit = /obj/item/clothing/suit/space/hardsuit/ert/medical
@@ -342,7 +335,6 @@
r_pocket = /obj/item/melee/classic_baton/telescopic
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/medical = 1,
/obj/item/clothing/mask/surgical = 1,
/obj/item/storage/firstaid/toxin = 1,
/obj/item/storage/firstaid/brute = 1,
@@ -369,7 +361,6 @@
r_pocket = /obj/item/reagent_containers/hypospray/autoinjector
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/medical/gamma = 1,
/obj/item/clothing/mask/gas/sechailer/swat = 1,
/obj/item/bodyanalyzer/advanced = 1,
/obj/item/extinguisher/mini = 1,
@@ -392,7 +383,7 @@
/datum/outfit/job/centcom/response_team/paranormal
name = "RT Paranormal"
rt_job = "Emergency Response Team Inquisitor"
- rt_mob_job = "ERT Paranormal"
+ rt_mob_job = "ERT Paranormal"
uniform = /obj/item/clothing/under/rank/chaplain
back = /obj/item/storage/backpack/ert/security
gloves = /obj/item/clothing/gloves/color/black
@@ -423,7 +414,6 @@
/datum/outfit/job/centcom/response_team/paranormal/red
name = "RT Paranormal (Red)"
suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
suit_store = /obj/item/gun/energy/gun
r_pocket = /obj/item/nullrod/ert
glasses = /obj/item/clothing/glasses/sunglasses
@@ -436,7 +426,6 @@
/datum/outfit/job/centcom/response_team/paranormal/gamma
name = "RT Paranormal (Gamma)"
suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/paranormal/inquisitor
suit_store = /obj/item/gun/energy/gun/nuclear
l_pocket = /obj/item/grenade/clusterbuster/holy
shoes = /obj/item/clothing/shoes/magboots/advance
@@ -483,7 +472,6 @@
/datum/outfit/job/centcom/response_team/janitorial/red
name = "RT Janitor (Red)"
suit = /obj/item/clothing/suit/space/hardsuit/ert/janitor
- head = /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
r_pocket = /obj/item/scythe/tele
@@ -505,7 +493,6 @@
shoes = /obj/item/clothing/shoes/magboots/advance
backpack_contents = list(
- /obj/item/clothing/head/helmet/space/hardsuit/ert/janitor/gamma = 1,
/obj/item/grenade/chem_grenade/antiweed = 2,
/obj/item/storage/box/lights/mixed = 1,
/obj/item/storage/bag/trash/bluespace = 1,
diff --git a/paradise.dme b/paradise.dme
index d064007fac6..6e7184a0b37 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -1386,6 +1386,7 @@
#include "code\modules\clothing\suits\labcoat.dm"
#include "code\modules\clothing\suits\miscellaneous.dm"
#include "code\modules\clothing\suits\storage.dm"
+#include "code\modules\clothing\suits\toggles.dm"
#include "code\modules\clothing\suits\utility.dm"
#include "code\modules\clothing\suits\wiz_robe.dm"
#include "code\modules\clothing\under\color.dm"
@@ -2447,4 +2448,4 @@
#include "goon\code\datums\browserOutput.dm"
#include "interface\interface.dm"
#include "interface\skin.dmf"
-// END_INCLUDE
\ No newline at end of file
+// END_INCLUDE