Files
Paradise/code/modules/clothing/spacesuits/hardsuit.dm
T

688 lines
29 KiB
Plaintext

//Baseline hardsuits
/obj/item/clothing/head/helmet/space/hardsuit
name = "hardsuit helmet"
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)
allowed = list(/obj/item/flashlight)
var/brightness_on = 4 //luminosity when on
var/on = 0
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)
//Species-specific stuff.
species_restricted = list("exclude","Diona","Wryn")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/helmet.dmi',
"Tajaran" = 'icons/mob/species/tajaran/helmet.dmi',
"Skrell" = 'icons/mob/species/skrell/helmet.dmi',
"Vox" = 'icons/mob/species/vox/helmet.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi',
"Drask" = 'icons/mob/species/drask/helmet.dmi',
"Grey" = 'icons/mob/species/grey/helmet.dmi'
)
sprite_sheets_obj = list(
"Unathi" = 'icons/obj/clothing/species/unathi/hats.dmi',
"Tajaran" = 'icons/obj/clothing/species/tajaran/hats.dmi',
"Skrell" = 'icons/obj/clothing/species/skrell/hats.dmi',
"Vox" = 'icons/obj/clothing/species/vox/hats.dmi',
"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, "<span class='warning'>You must fasten the helmet to a hardsuit first. (Target the head and use on a hardsuit)</span>") // 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)
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
H.update_inv_head()
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/hardsuit/extinguish_light()
if(on)
toggle_light()
visible_message("<span class='danger'>[src]'s light fades and turns off.</span>")
/obj/item/clothing/head/helmet/space/hardsuit/item_action_slot_check(slot)
if(slot == slot_head)
return 1
/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."
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, /obj/item/rpd)
siemens_coefficient = 0
actions_types = list(/datum/action/item_action/toggle_helmet)
hide_tail_by_species = list("Vox" , "Vulpkanin" , "Unathi" , "Tajaran")
species_restricted = list("exclude","Diona","Wryn")
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
"Skrell" = 'icons/mob/species/skrell/suit.dmi',
"Vox" = 'icons/mob/species/vox/suit.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi',
"Drask" = 'icons/mob/species/drask/suit.dmi'
)
sprite_sheets_obj = list(
"Unathi" = 'icons/obj/clothing/species/unathi/suits.dmi',
"Tajaran" = 'icons/obj/clothing/species/tajaran/suits.dmi',
"Skrell" = 'icons/obj/clothing/species/skrell/suits.dmi',
"Vox" = 'icons/obj/clothing/species/vox/suits.dmi',
"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)
..()
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, "<span class='notice'>You retract your hardsuit helmet.</span>")
else
if(H.head)
to_chat(H, "<span class='warning'>You cannot deploy your helmet while wearing another helmet.</span>")
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, "<span class='notice'>You deploy your hardsuit helmet, sealing you off from the world.</span>")
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, "<span class='info'>You can not modify the hardsuit while it is being worn.</span>")
return 0
return 1
//Engineering hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/engineering
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)
/obj/item/clothing/suit/space/hardsuit/engineering
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)
//Chief Engineer's hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/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)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
/obj/item/clothing/suit/space/hardsuit/elite
icon_state = "hardsuit-white"
name = "advanced hardsuit"
desc = "An advanced suit that protects against hazardous, low pressure environments. Shines with a high polish."
item_state = "ce_hardsuit"
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
//Mining hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/mining
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "hardsuit0-mining"
item_state = "mining_helm"
item_color = "mining"
armor = list(melee = 30, bullet = 5, laser = 10, energy = 5, bomb = 50, bio = 100, rad = 50)
/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"
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)
//Syndicate hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/syndi
name = "blood-red hardsuit helmet"
desc = "A dual-mode advanced helmet designed for work in special operations. It is in travel mode. Property of Gorlex Marauders."
alt_desc = "A dual-mode advanced helmet designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)
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
/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))
linkedsuit = loc
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user)
if(!linkedsuit)
to_chat(user, "<span class='notice'>You must attach the helmet to a syndicate hardsuit to toggle combat mode!</span>")
return
on = !on
if(on)
to_chat(user, "<span class='notice'>You switch your helmet to travel mode. It will allow you to stand in zero pressure environments, at the cost of speed.</span>")
name = initial(name)
desc = initial(desc)
set_light(brightness_on)
flags = BLOCKHAIR | STOPSPRESSUREDMAGE | THICKMATERIAL | NODROP
flags_cover |= HEADCOVERSEYES | HEADCOVERSMOUTH
flags_inv |= visor_flags_inv
cold_protection |= HEAD
else
to_chat(user, "<span class='notice'>You switch your helmet to combat mode. You will take damage in zero pressure environments, but you are more suited for a fight.</span>")
name = "blood-red hardsuit helmet (combat)"
desc = alt_desc
set_light(0)
flags = BLOCKHAIR | THICKMATERIAL | NODROP
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()
for(var/X in actions)
var/datum/action/A = X
A.UpdateButtonIcon()
/obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/toggle_hardsuit_mode(mob/user) //Helmet Toggles Suit Mode
if(linkedsuit)
if(on)
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.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.cold_protection &= ~(UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS)
linkedsuit.flags_inv &= ~(HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL)
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."
alt_desc = "A dual-mode advanced hardsuit designed for work in special operations. It is in combat mode. Property of Gorlex Marauders."
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
w_class = WEIGHT_CLASS_NORMAL
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]"
//Elite Syndie suit
/obj/item/clothing/head/helmet/space/hardsuit/syndi/elite
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."
icon_state = "hardsuit0-syndielite"
item_color = "syndielite"
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
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"
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
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
icon_state = "hardsuit0-sst"
item_color = "sst"
/obj/item/clothing/suit/space/hardsuit/syndi/elite/sst
armor = list(melee = 70, bullet = 70, laser = 50, energy = 40, bomb = 80, bio = 100, rad = 100)
icon_state = "hardsuit0-sst"
item_color = "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"
/obj/item/clothing/suit/space/hardsuit/syndi/freedom/update_icon()
return
//Wizard hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/wizard
name = "gem-encrusted hardsuit helmet"
desc = "A bizarre gem-encrusted helmet that radiates magical energies."
icon_state = "hardsuit0-wiz"
item_state = "wiz_helm"
item_color = "wiz"
unacidable = TRUE //No longer shall our kind be foiled by lone chemists with spray bottles!
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
heat_protection = HEAD //Uncomment to enable firesuit protection
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
species_fit = list("Grey")
sprite_sheets = list(
"Grey" = 'icons/mob/species/grey/helmet.dmi'
)
magical = TRUE
/obj/item/clothing/suit/space/hardsuit/wizard
icon_state = "hardsuit-wiz"
name = "gem-encrusted hardsuit"
desc = "A bizarre gem-encrusted suit that radiates magical energies."
item_state = "wiz_hardsuit"
w_class = WEIGHT_CLASS_NORMAL
unacidable = TRUE
armor = list(melee = 40, bullet = 40, laser = 40, energy = 20, bomb = 35, bio = 100, rad = 50)
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
sprite_sheets = null
magical = TRUE
//Medical hardsuit
/obj/item/clothing/head/helmet/space/hardsuit/medical
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Built with lightweight materials for extra comfort, but does not protect the eyes from intense light."
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
scan_reagents = 1 //Generally worn by the CMO, so they'd get utility off of seeing reagents
/obj/item/clothing/suit/space/hardsuit/medical
icon_state = "hardsuit-medical"
name = "medical hardsuit"
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)
//Security
/obj/item/clothing/head/helmet/space/hardsuit/security
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
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)
/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)
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)
//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
//Singuloth armor
/obj/item/clothing/head/helmet/space/hardsuit/singuloth
name = "singuloth knight's helmet"
desc = "This is an adamantium helmet from the chapter of the Singuloth Knights. It shines with a holy aura."
icon_state = "hardsuit0-singuloth"
item_state = "singuloth_helm"
item_color = "singuloth"
armor = list(melee = 40, bullet = 5, laser = 20, energy = 5, bomb = 25, bio = 100, rad = 100)
/obj/item/clothing/suit/space/hardsuit/singuloth
icon_state = "hardsuit-singuloth"
name = "singuloth knight's armor"
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
/////////////SHIELDED//////////////////////////////////
/obj/item/clothing/suit/space/hardsuit/shielded
name = "shielded hardsuit"
desc = "A hardsuit with built in energy shielding. Will rapidly recharge when not under fire."
icon_state = "hardsuit-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
var/max_charges = 3 //How many charges total the shielding has
var/recharge_delay = 200 //How long after we've been shot before we can start recharging. 20 seconds here
var/recharge_cooldown = 0 //Time since we've last been shot
var/recharge_rate = 1 //How quickly the shield recharges once it starts charging
var/shield_state = "shield-old"
var/shield_on = "shield-old"
sprite_sheets = null
/obj/item/clothing/suit/space/hardsuit/shielded/hit_reaction(mob/living/carbon/human/owner, attack_text)
if(current_charges > 0)
do_sparks(2, 1, src)
owner.visible_message("<span class='danger'>[owner]'s shields deflect [attack_text] in a shower of sparks!</span>")
current_charges--
recharge_cooldown = world.time + recharge_delay
processing_objects |= src
if(current_charges <= 0)
owner.visible_message("[owner]'s shield overloads!")
shield_state = "broken"
owner.update_inv_wear_suit()
return 1
return 0
/obj/item/clothing/suit/space/hardsuit/shielded/Destroy()
processing_objects.Remove(src)
return ..()
/obj/item/clothing/suit/space/hardsuit/shielded/process()
if(world.time > recharge_cooldown && current_charges < max_charges)
current_charges = Clamp((current_charges + recharge_rate), 0, max_charges)
playsound(loc, 'sound/magic/charge.ogg', 50, 1)
if(current_charges == max_charges)
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
processing_objects.Remove(src)
shield_state = "[shield_on]"
if(istype(loc, /mob/living/carbon/human))
var/mob/living/carbon/human/C = loc
C.update_inv_wear_suit()
//////Syndicate Version
/obj/item/clothing/suit/space/hardsuit/shielded/syndi
name = "blood-red hardsuit"
desc = "An advanced hardsuit with built in energy shielding."
icon_state = "hardsuit1-syndi"
item_state = "syndie_hardsuit"
item_color = "syndi"
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
sprite_sheets = list(
"Unathi" = 'icons/mob/species/unathi/suit.dmi',
"Tajaran" = 'icons/mob/species/tajaran/suit.dmi',
"Skrell" = 'icons/mob/species/skrell/suit.dmi',
"Vox" = 'icons/mob/species/vox/suit.dmi',
"Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi',
"Drask" = 'icons/mob/species/drask/suit.dmi'
)
/obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi
name = "blood-red hardsuit helmet"
desc = "An advanced hardsuit helmet with built in energy shielding."
icon_state = "hardsuit1-syndi"
item_state = "syndie_helm"
item_color = "syndi"
armor = list(melee = 40, bullet = 50, laser = 30, energy = 15, bomb = 35, bio = 100, rad = 50)