diff --git a/baystation12.dme b/baystation12.dme index ebdca068e8f..317057caad6 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -807,6 +807,7 @@ #include "code\modules\clothing\spacesuits\rig\modules\ninja.dm" #include "code\modules\clothing\spacesuits\rig\modules\utility.dm" #include "code\modules\clothing\spacesuits\rig\modules\vision.dm" +#include "code\modules\clothing\spacesuits\rig\suits\alien.dm" #include "code\modules\clothing\spacesuits\rig\suits\combat.dm" #include "code\modules\clothing\spacesuits\rig\suits\ert.dm" #include "code\modules\clothing\spacesuits\rig\suits\light.dm" diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 46c4427d671..ba037f20cbb 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -35,50 +35,6 @@ item_state = "skrell_suit_black" item_color = "skrell_suit_black" -//Unathi space gear. Huge and restrictive. -/obj/item/clothing/head/helmet/space/unathi - armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) - heat_protection = HEAD - max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - var/up = 0 //So Unathi helmets play nicely with the weldervision check. - species_restricted = list("Unathi") - -/obj/item/clothing/head/helmet/space/unathi/helmet_cheap - name = "NT breacher helmet" - desc = "Hey! Watch it with that thing! It's a knock-off of a Unathi battle-helm, and that spike could put someone's eye out." - icon_state = "unathi_helm_cheap" - item_state = "unathi_helm_cheap" - item_color = "unathi_helm_cheap" - -/obj/item/clothing/suit/space/unathi - armor = list(melee = 40, bullet = 30, laser = 30,energy = 15, bomb = 35, bio = 100, rad = 50) - allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/weapon/storage/bag/ore,/obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd) - heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS - max_heat_protection_temperature = SPACE_SUIT_MAX_HEAT_PROTECTION_TEMPERATURE - species_restricted = list("Unathi") - -/obj/item/clothing/suit/space/unathi/rig_cheap - name = "NT breacher chassis" - desc = "A cheap NT knock-off of a Unathi battle-rig. Looks like a fish, moves like a fish, steers like a cow." - icon_state = "rig-unathi-cheap" - item_state = "rig-unathi-cheap" - slowdown = 3 - -/obj/item/clothing/head/helmet/space/unathi/breacher - name = "breacher helm" - desc = "Weathered, ancient and battle-scarred. The helmet is too." - icon_state = "unathi_breacher" - item_state = "unathi_breacher" - item_color = "unathi_breacher" - -/obj/item/clothing/suit/space/unathi/breacher - name = "breacher chassis" - desc = "Huge, bulky and absurdly heavy. It must be like wearing a tank." - icon_state = "unathi_breacher" - item_state = "unathi_breacher" - item_color = "unathi_breacher" - slowdown = 1 - // Vox space gear (vaccuum suit, low pressure armour) // Can't be equipped by any other species due to bone structure and vox cybernetics. /obj/item/clothing/suit/space/vox diff --git a/code/modules/clothing/spacesuits/rig/modules/vision.dm b/code/modules/clothing/spacesuits/rig/modules/vision.dm index 104720eba03..ec37b58f05a 100644 --- a/code/modules/clothing/spacesuits/rig/modules/vision.dm +++ b/code/modules/clothing/spacesuits/rig/modules/vision.dm @@ -1,3 +1,10 @@ +/* + * Contains + * /obj/item/rig_module/vision + * /obj/item/rig_module/vision/meson + * /obj/item/rig_module/vision/thermal + */ + /datum/rig_vision var/mode var/obj/item/clothing/glasses/glasses diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm index 07339a9755b..7cef5603cdf 100644 --- a/code/modules/clothing/spacesuits/rig/rig.dm +++ b/code/modules/clothing/spacesuits/rig/rig.dm @@ -62,6 +62,7 @@ var/sealing // Keeps track of seal status independantly of canremove. var/offline = 1 // Should we be applying suit maluses? var/offline_slowdown = 10 // If the suit is deployed and unpowered, it sets slowdown to this. + var/vision_restriction var/offline_vision_restriction = 1 // 0 - none, 1 - welder vision, 2 - blind. Maybe move this to helmets. // Wiring! How exciting. diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm index a954e9af1e5..50e0353d549 100644 --- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm +++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm @@ -183,7 +183,7 @@ ..() -/obj/item/weapon/rig/attackby(var/mob/user) +/obj/item/weapon/rig/attack_hand(var/mob/user) if(electrified != 0) if(cell && cell.charge >= 100) diff --git a/code/modules/clothing/spacesuits/rig/rig_wiring.dm b/code/modules/clothing/spacesuits/rig/rig_wiring.dm index aeccc068c38..64645acc0ea 100644 --- a/code/modules/clothing/spacesuits/rig/rig_wiring.dm +++ b/code/modules/clothing/spacesuits/rig/rig_wiring.dm @@ -20,11 +20,12 @@ var/obj/item/weapon/rig/rig = holder switch(index) if(RIG_SECURITY) - if(!mended) + if(mended) rig.req_access = initial(rig.req_access) rig.req_one_access = initial(rig.req_one_access) if(RIG_INTERFACE_SHOCK) - rig.electrified = -1 + rig.electrified = mended ? 0 : -1 + rig.shock(usr,100) /datum/wires/rig/UpdatePulsed(var/index) @@ -32,17 +33,22 @@ switch(index) if(RIG_SECURITY) rig.security_check_enabled = !rig.security_check_enabled + rig.visible_message("\The [src] twitches as several suit locks [rig.security_check_enabled?"close":"open"].") if(RIG_AI_OVERRIDE) rig.ai_override_enabled = !rig.ai_override_enabled + rig.visible_message("A small red light on [src] [rig.ai_override_enabled?"goes dead":"flickers on"].") if(RIG_SYSTEM_CONTROL) rig.malfunctioning += 10 if(rig.malfunction_delay <= 0) rig.malfunction_delay = 20 + rig.shock(usr,100) if(RIG_INTERFACE_LOCK) rig.interface_locked = !rig.interface_locked + rig.visible_message("\The [src] clicks audibly as the software interface [rig.interface_locked?"darkens":"brightens"].") if(RIG_INTERFACE_SHOCK) if(rig.electrified != -1) rig.electrified = 30 + rig.shock(usr,100) /datum/wires/rig/CanUse(var/mob/living/L) var/obj/item/weapon/rig/rig = holder diff --git a/code/modules/clothing/spacesuits/rig/suits/alien.dm b/code/modules/clothing/spacesuits/rig/suits/alien.dm new file mode 100644 index 00000000000..dc449f68fb5 --- /dev/null +++ b/code/modules/clothing/spacesuits/rig/suits/alien.dm @@ -0,0 +1,19 @@ +/obj/item/weapon/rig/unathi + name = "NT breacher chassis control module" + desc = "A cheap NT knock-off of a Unathi battle-rig. Looks like a fish, moves like a fish, steers like a cow." + suit_type = "NT breacher" + icon_state = "breacher_rig_cheap" + armor = list(melee = 60, bullet = 60, laser = 60, energy = 60, bomb = 70, bio = 100, rad = 50) + slowdown = 6 + offline_slowdown = 10 + vision_restriction = 1 + offline_vision_restriction = 2 + +/obj/item/weapon/rig/unathi/fancy + name = "breacher chassis control module" + desc = "An authentic Unathi breacher chassis. Huge, bulky and absurdly heavy. It must be like wearing a tank." + suit_type = "breacher chassis" + icon_state = "breacher_rig" + armor = list(melee = 90, bullet = 90, laser = 90, energy = 90, bomb = 90, bio = 100, rad = 80) + vision_restriction = 0 + offline_vision_restriction = 2 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c9c8733a97d..1d40e99acd2 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1188,8 +1188,9 @@ //Check rig first because it's two-check and other checks will override it. if(istype(back,/obj/item/weapon/rig)) var/obj/item/weapon/rig/O = back - if(O.offline && O.offline_vision_restriction == 2 && O.helmet && O.helmet == head && (O.helmet.body_parts_covered & EYES)) - blinded = 1 + if(O.helmet && O.helmet == head && (O.helmet.body_parts_covered & EYES)) + if((O.offline && O.offline_vision_restriction == 2) || (!O.offline && O.vision_restriction == 2)) + blinded = 1 // Check everything else. if(!species.has_organ["eyes"]) // Presumably if a species has no eyes, they see via something else. @@ -1485,12 +1486,6 @@ var/masked = 0 - if(istype(head, /obj/item/clothing/head/welding) || istype(head, /obj/item/clothing/head/helmet/space/unathi)) - var/obj/item/clothing/head/welding/O = head - if(!O.up && tinted_weldhelh) - client.screen |= global_hud.darkMask - masked = 1 - if(!masked && istype(glasses, /obj/item/clothing/glasses/welding)) var/obj/item/clothing/glasses/welding/O = glasses if(!O.up && tinted_weldhelh) @@ -1500,8 +1495,9 @@ if(!masked && istype(back, /obj/item/weapon/rig)) var/obj/item/weapon/rig/O = back // Ugh, why is this done on a case by case basis? Why is there no flag for causing weldervision? - if(O.offline && O.offline_vision_restriction == 1 && O.helmet && O.helmet == head && (O.helmet.body_parts_covered & EYES)) - client.screen |= global_hud.darkMask + if(O.helmet && O.helmet == head && (O.helmet.body_parts_covered & EYES)) + if((O.offline && O.offline_vision_restriction == 1) || (!O.offline && O.vision_restriction == 1)) + client.screen |= global_hud.darkMask if(machine) if(!machine.check_eye(src)) diff --git a/icons/mob/feet.dmi b/icons/mob/feet.dmi index 0551fc5b53e..f6fa664835a 100644 Binary files a/icons/mob/feet.dmi and b/icons/mob/feet.dmi differ diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index b8d9db2fc0f..a569f344a0f 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index bebdca6d5e4..b2597cb2920 100644 Binary files a/icons/mob/head.dmi and b/icons/mob/head.dmi differ diff --git a/icons/mob/head.dmi.BASE.dmi b/icons/mob/head.dmi.BASE.dmi new file mode 100644 index 00000000000..0f5c3a56044 Binary files /dev/null and b/icons/mob/head.dmi.BASE.dmi differ diff --git a/icons/mob/head.dmi.LOCAL.dmi b/icons/mob/head.dmi.LOCAL.dmi new file mode 100644 index 00000000000..6e076e8eac1 Binary files /dev/null and b/icons/mob/head.dmi.LOCAL.dmi differ diff --git a/icons/mob/head.dmi.REMOTE.dmi b/icons/mob/head.dmi.REMOTE.dmi new file mode 100644 index 00000000000..56fbb333311 Binary files /dev/null and b/icons/mob/head.dmi.REMOTE.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index ac01667d898..11a6a604e7c 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index e71faaeb0f5..77b4e4f67b0 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index ed913817746..33ae3f3e6b3 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 6d94a3926c0..97f81937edd 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index a6ea65b2a55..9f1898e2cde 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 48137c3f012..90e31714878 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -1804,7 +1804,7 @@ "aIJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/bridge) "aIK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/bridge) "aIL" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) -"aIM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/head/helmet/space/unathi/helmet_cheap,/obj/item/clothing/mask/breath,/obj/item/clothing/suit/space/unathi/rig_cheap,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) +"aIM" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/rig/unathi,/obj/item/clothing/mask/breath,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/storage/eva) "aIN" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Security"; location = "EVA2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "L12"},/area/hallway/primary/central_one) "aIO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "L16"},/area/hallway/primary/central_one) "aIP" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor,/area/hallway/primary/central_one)