mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-20 10:37:17 +01:00
688 lines
29 KiB
Plaintext
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)
|