395bebcdcc
About The Pull Request
This makes space suits use a cell and warm the wearer, This was handled by the handle_environment proc in the past with an override to make the suits work. This corrects this issue, and removes the override.
All space suits will have a cell installed at round start, this cell will last 15 min on average usage.
The cell cover can be toggled by alt+clicking (press the button), or using a crowbar (just pry it open) on the suit.
With the cover open you can remove the cell by using the suit in hand, or ctrl+clicking the suit.
As well with the cover open you can use a screwdriver to set the thermal regulator's temperature. The normal range is 20 c to 45 c, do not use an emag on the suit to increase the temperature range.
Examining the suit will report the temperature setting and the cells charge, if the cover is open you will also be able to see the type of cell that is in the suit.
Suit storage units will now charge the cells in suits, they will also require power to operate properly now.
Why It's Good For The Game
Space suits should be managing the wearers temp in space not using some override.
Lizards now have a portable heater in the form of any space suit.
Now that suits need a cell it is not as easy to spend all session in a space suit.
New interactions with hardsuits and emp's give nice combat buff to an underused item.
Nuke ops can raid xeno for some nice yellow cells, or science for a big old bluespace cell.
112 lines
5.1 KiB
Plaintext
112 lines
5.1 KiB
Plaintext
/****************Explorer's Suit and Mask****************/
|
|
/obj/item/clothing/suit/hooded/explorer
|
|
name = "explorer suit"
|
|
desc = "An armoured suit for exploring harsh environments."
|
|
icon_state = "explorer"
|
|
item_state = "explorer"
|
|
body_parts_covered = CHEST|GROIN|LEGS|ARMS
|
|
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
|
|
cold_protection = CHEST|GROIN|LEGS|ARMS
|
|
max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT
|
|
heat_protection = CHEST|GROIN|LEGS|ARMS
|
|
hoodtype = /obj/item/clothing/head/hooded/explorer
|
|
armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
|
|
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/clothing/head/hooded/explorer
|
|
name = "explorer hood"
|
|
desc = "An armoured hood for exploring harsh environments."
|
|
icon_state = "explorer"
|
|
body_parts_covered = HEAD
|
|
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
|
|
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
|
|
max_heat_protection_temperature = FIRE_HELM_MAX_TEMP_PROTECT
|
|
armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50)
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/clothing/suit/hooded/explorer/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/armor_plate)
|
|
|
|
/obj/item/clothing/head/hooded/explorer/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/armor_plate)
|
|
|
|
/obj/item/clothing/mask/gas/explorer
|
|
name = "explorer gas mask"
|
|
desc = "A military-grade gas mask that can be connected to an air supply."
|
|
icon_state = "gas_mining"
|
|
visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
|
|
visor_flags_inv = HIDEFACIALHAIR
|
|
visor_flags_cover = MASKCOVERSMOUTH
|
|
actions_types = list(/datum/action/item_action/adjust)
|
|
armor = list("melee" = 10, "bullet" = 5, "laser" = 5, "energy" = 5, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 20, "acid" = 40)
|
|
resistance_flags = FIRE_PROOF
|
|
|
|
/obj/item/clothing/mask/gas/explorer/attack_self(mob/user)
|
|
adjustmask(user)
|
|
|
|
/obj/item/clothing/mask/gas/explorer/adjustmask(user)
|
|
..()
|
|
w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL
|
|
|
|
/obj/item/clothing/mask/gas/explorer/folded/Initialize()
|
|
. = ..()
|
|
adjustmask()
|
|
|
|
/obj/item/clothing/suit/space/hostile_environment
|
|
name = "H.E.C.K. suit"
|
|
desc = "Hostile Environment Cross-Kinetic Suit: A suit designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
|
|
icon_state = "hostile_env"
|
|
item_state = "hostile_env"
|
|
clothing_flags = THICKMATERIAL //not spaceproof
|
|
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
|
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
|
slowdown = 0
|
|
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
|
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe)
|
|
|
|
/obj/item/clothing/suit/space/hostile_environment/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/spraycan_paintable)
|
|
|
|
/obj/item/clothing/suit/space/hostile_environment/process()
|
|
. = ..()
|
|
var/mob/living/carbon/C = loc
|
|
if(istype(C) && prob(2)) //cursed by bubblegum
|
|
if(prob(15))
|
|
new /datum/hallucination/oh_yeah(C)
|
|
to_chat(C, "<span class='colossus'><b>[pick("I AM IMMORTAL.","I SHALL TAKE BACK WHAT'S MINE.","I SEE YOU.","YOU CANNOT ESCAPE ME FOREVER.","DEATH CANNOT HOLD ME.")]</b></span>")
|
|
else
|
|
to_chat(C, "<span class='warning'>[pick("You hear faint whispers.","You smell ash.","You feel hot.","You hear a roar in the distance.")]</span>")
|
|
|
|
/obj/item/clothing/head/helmet/space/hostile_environment
|
|
name = "H.E.C.K. helmet"
|
|
desc = "Hostile Environiment Cross-Kinetic Helmet: A helmet designed to withstand the wide variety of hazards from Lavaland. It wasn't enough for its last owner."
|
|
icon_state = "hostile_env"
|
|
item_state = "hostile_env"
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
|
|
clothing_flags = THICKMATERIAL // no space protection
|
|
armor = list("melee" = 70, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
|
resistance_flags = FIRE_PROOF | LAVA_PROOF
|
|
|
|
/obj/item/clothing/head/helmet/space/hostile_environment/Initialize()
|
|
. = ..()
|
|
AddComponent(/datum/component/spraycan_paintable)
|
|
update_icon()
|
|
|
|
/obj/item/clothing/head/helmet/space/hostile_environment/update_overlays()
|
|
. = ..()
|
|
var/mutable_appearance/glass_overlay = mutable_appearance(icon, "hostile_env_glass")
|
|
glass_overlay.appearance_flags = RESET_COLOR
|
|
. += glass_overlay
|
|
|
|
/obj/item/clothing/head/helmet/space/hostile_environment/worn_overlays(isinhands)
|
|
. = ..()
|
|
if(!isinhands)
|
|
var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/head.dmi', "hostile_env_glass")
|
|
M.appearance_flags = RESET_COLOR
|
|
. += M
|