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